基於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.插件功能

相關文章
相關標籤/搜索