zoukankan      html  css  js  c++  java
  • Nopcommerce架构浅谈之文件结构

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

    今天我就简单的先将系统解决方案中的项目做拆解,并附上自己的理解。我这里使用的是3.7版本的源码,官方目前到3.8,整体应该差别不大,可以到官网查看http://www.nopcommerce.com

    从四个文件夹说起:

      一、Libraries

    这里存放了大量的领域层服务、领域事件、基础设施等,可以说是整个系统的最核心,我的理解是即使没有展示层,这里的所有的功能也是完整的,换句话说,如果我将整个系统开发成API,这里地方不需要做额外的改动,只需要api程序调用这里的相关功能就可以实现,绝对的松耦合。

    1. Nop.Core项目

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

    2. Nop.Data项目

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

    3. Nop.Service项目

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

      二、Plugins   插件机制是nop系统的一个很大的特色,不需要对系统做二次开发,可以灵活的开发出各种插件应用于系统。这个文件夹下面防止了大量的插件项目。

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

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

            

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

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

           

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

  • 相关阅读:
    72.2801 LOL-盖伦的蹲草计划(广搜)
    71.双向最短路径:聚会
    POJ 2531 Network Saboteur
    POJ 3274 Gold Balanced Lineup(哈希)
    POJ 3349 Snowflake Snow Snowflakes(哈希)
    (重)POJ 3020Antenna Placement
    HDU 1098 Ignatius's puzzle
    中国海洋大学第四届朗讯杯高级组 I Cuckoo for Hashing
    中国海洋大学第四届朗讯杯高级组 A Rocky
    CF 217 B. Berland Bingo
  • 原文地址:https://www.cnblogs.com/tombaur/p/6211480.html
Copyright © 2011-2022 走看看