Nopcommerce架构浅谈之文件结构

 

应该是在两年前了,在拜读园子里大神的文章时偶然了解到有个叫NopCommerce的商城系统,苦于没有时间,各类耽误,其中研究过一段时间,也就是一个星期时间,后来又耽搁了,直到最近,随着项目进入间歇期,终于有时间好好的研究下nop的代码了,做为优秀的.net B2C商城系统,从系统的架构设计角度出发,具备很强的拓展性,结合DDD思想,我以为能够对系统有更深刻的了解。web

今天我就简单的先将系统解决方案中的项目作拆解,并附上本身的理解。我这里使用的是3.7版本的源码,官方目前到3.8,总体应该差异不大,能够到官网查看http://www.nopcommerce.com数据库

从四个文件夹提及:api

  1、Libraries架构

这里存放了大量的领域层服务、领域事件、基础设施等,能够说是整个系统的最核心,个人理解是即便没有展现层,这里的全部的功能也是完整的,换句话说,若是我将整个系统开发成API,这里地方不须要作额外的改动,只须要api程序调用这里的相关功能就能够实现,绝对的松耦合。框架

  1. Nop.Core项目

     

    文件没有显示齐全,可是能够大概看到,这个项目里存放了大量的通用支撑功能,用ddd的话讲应该就叫通用支撑子域,还包括了基础设施,领域类等。单元测试

  2. Nop.Data项目

     

    这个项目里是同数据库作交互操做的数据层,在ddd里属于基础设施一部分,也能够单独拎出来,之后换数据库也不是难事。学习

     

  3. Nop.Service项目

    领域服务,主要进行领域逻辑的实现。这个层的客户只有应用层,那么应用层在哪里?就在展现层中。其实这个里面并不包括web技术所特有的一些领域逻辑实现,就像我开始讲的,web的领域逻辑实如今展现层中的web框架项目中。测试

  2、Plugins   插件机制是nop系统的一个很大的特点,不须要对系统作二次开发,能够灵活的开发出各类插件应用于系统。这个文件夹下面防止了大量的插件项目。.net

    从名字就能够看出来了,有支付插件,有留言簿插件,有各类打折促销插件,这个之后再细说。插件

   3、Presentation   展现层面,分为后台管理admin项目,前台web项目,web框架项目,他的绝妙之处在于将web框架从领域逻辑层剥离,就像刚才上面所讲的,能够将libraries里的服务单独拿出来用,没有任何的违和。

        

  这里重点说下Framework,它是对Nop.Service的补充,重点在于对web程序的应用功能进行领域服务的深刻。

  4、Tests  大量的测试项目,这个在老外写的规范的项目里都是必须存在的,可是在国内,猿们为了更快的完成老板交代的任务,基本不会去作单元测试,唉。。。其实这个是绝对好,能够节省大量的时间。

       

 

后面我将逐个进行分析,对于nopcommerce,个人目标不是改装他,而是更多的学习先进的开发思惟,必定要结合ddd思想。

相关文章
相关标签/搜索