基于nopcommerce b2c开源项目的精简版开发框架Nop.Framework

 该开源项目是博客园的网友 徐领 发布的的一款基于b2c开源项目nopCommerce的开发框架,名叫Nop.Framework,去除了电商业务,保留基础功能。html

 .NET的开发人员应该都知道这个大名鼎鼎的高质量b2c开源项目-nopCommerce,基于EntityFramework和MVC开发,拥有透明且结构良好的解决方案,同时结合了开源和商业软件的最佳特性。官网地址:http://www.nopcommerce.com/,中文网:http://www.nopcn.com/。下载后先后端展现以下。若是你还未了解过该项目,建议从官网下载代码后在本地运行查看效果。前端

  做者使用该框架开发过很多项目,总的来讲,方便简洁,集成了.NET开发许多经常使用的组件和功能。一直想将它分享出来,但忙于工做而没有达成,最近也是有时间来写这篇文章,本文将展现如何提取该源码的精简框架并附上源码(基于nopCommerce3.9版本)。若是你想了解框架结构,经过该框架来开发项目,那么看一遍该文章是有价值的。前排提示:本框架源码已上传到GitHub:https://github.com/dreling8/Nop.Framework,有兴趣的能够关注该项目,后续会将其它的一些通用模块添加进去,如用户管理(IWorkContext 工做上下文)、插件功能、任务模块(taskservice)、日志、缓存、本地化等。欢迎star给星星,你的支持是个人动力!git

  

  

 

 1、了解项目结构

  从项目结构图中咱们也能够看出Nop的层次划分很是清晰,先看我画的层次图github

  

  

 

  1. 展示层(Presentation)web

  也可称之为应用层,只关注前端的整合,不涉及任何领域逻辑实现。这一层只作展示,对咱们框架来讲是无关紧要的,所以提取框架时会将该层删除。sql

  2. 业务服务层(Nop.Services)数据库

  整个系统的服务层,提供了对每一个领域的接口和实现。这一层很是重要,提供了程序内对展示层的接口服务,不论展示层使用mvc,仍是使用winform,异或是给app调用的webapi接口,都须要该层服务。但该层的服务主要是电商的一些服务,对咱们框架无用,所以在这个框架中会删除全部服务,只添加一个测试服务后端

类和接口,应用到项目中你应该在该层添加接口和服务。api

 

  3. 数据层(Nop.Data)缓存

  nop在数据层的仓储实现中使用了ef和sqlserver数据库,若是你想扩展,也能够在该层使用其它的ORM映射库和数据库。这一层的大部分功能咱们会在框架中将保留。

  4. 基础设施层(Nop.Core)

  包括缓存的实现、配置、领域模型等等。在框架中会保留一部分功能,并将Domain领域模型移出该层作单独项目,为何要这样作,由于一般状况下,Domain层的调整会比较多,因此我通常将Domain作单独Project,固然你也能够不调整,但框架作了该调整。

  2、删除与业务相关的代码

  咱们已经对Nop的整个代码层次结构有了了解,基于如下两点开始修改项目源码:1.框架足够精简,没有任何电商业务。2.核心功能保留。建议在开始前先copy一份源码保留。

  1. Test项目:Tests文件夹下面是测试项目,不是必需的,将它所有移除,开发具体业务,能够再单独添加测试项目。因为是测试项目,删除后整个项目还能跑起来。

  

  2. Presentation展示层:这里的三个项目,分别是前台,后端和两个项目共用的一些模块。和测试项目同样,这里咱们也所有移除。

  

  3. Plugin项目:插件项目,同一、2同样,插件也不是必需的,移除全部的插件项目。如今只剩下三个项目了(欢迎关注该项目的github,后续我会专门写篇文章介绍如何添加插件)。

  

  Nop.Services:业务服务层,这一层是程序集内对外接口层,须要保留。删除全部相关的业务服务类,其中日志、帮助、任务等跟系统相关的都删除,目的是更好的展现整个系统的结构。添加一个测试类,暂时什么都不写。

  

  Nop.Data:数据层项目。这层基本不作调整,只删除EF的Mapping映射相关类。

  Nop.Core:基础设施层。删除电商业务相关的Domain,新建项目Nop.Domain。

  报错了,IWorkContext(工做上下文,用于获取用户信息等数据)依赖Domain,删除它。这个过程可能要删除很多文件,直到项目再也不报错。完成后咱们的项目结构以下,注意咱们将Nop.Core中的实体基类移到了Nop.Domain中,到这一步,咱们的基础框架结构已经大体出来了。

  

有关该项目的更多说明,请查看做者的博客介绍:http://www.cnblogs.com/dreling/p/6906688.html

做者表示后续将会添加如下这些模块和功能,有兴趣的朋友可关注项目1.本地化模块 localization2.用户模块 工做上下文 workcontext3.任务模块 taskservice4.日志模块 logservice5.缓存模块 cache6.配置模块 config7.插件功能

相关文章
相关标签/搜索