NopCommerce源碼架構詳解--初識高性能的開源商城系統cms


很多人都說通過閱讀、學習大神們高質量的代碼是提高自己技術能力最快的方式之一。我覺得通過閱讀NopCommerce的源碼,可以從中學習很多企業系統、軟件開發的規范和一些新的技術、技巧,可以快速地提高我們的技術能力。所以我最近決定寫一個“NopCommerce源碼架構詳解”的系列,來詳細剖析NopCommerce的架構和原理。

Nopcommerce主要用到的技術及特點:

1、Entity Framework

2、ASP.NET mvc

3、IoC容器+依賴注入(Autofac)

4、使用EF中的EntityTypeConfiguration+Repository模式+領域驅動開發

5、插件技術

6、Themes主題技術

7、Ajax

8、Validator驗證技術

9、面向接口編程

10、事件通知、日志機制

11、緩存(System.Runtime.Caching.MemoryCache)

12、網站計划任務

13、消息隊列

14、多語言支持

15、Jquery UI+kendo UI

16、多網店支持、促銷推廣、在線支付

17、seo友好支持

18、其它asp.net MVC和c#最新核心技術

Nopcommerce是國外的一個高質量的開源b2c網站系統,最新版是基於Entity Framework6.0和MVC5.0,使用razor模板引擎,有很強的插件機制,包括支付配送功能都是通過插件來實現的,基於xml的多語言版本,非常靈活的語言切換功能,包括在后台都能同時編輯產品的中英文屬性,非常適合做外貿,優秀超前的程序架構,性能也非常強大,自定義的產品名稱和分類又有很好的seo優化。綜合能力遠遠高於國內的一些程序架構糟糕的.net商城程序,是二次開發和大型b2c架構的首選。3.0開始支持多店。

前台頁面效果:

后台管理頁面:

NopCommerce最新版的在CodePlex的源碼下載

nopcommerce主要從上往下Nop.Web、Nop.Admin、Nop.Web.Framework、Nop插件、Nop.Services、
Nop.Core、Nop.Data。引用的第三方模塊EntityFramework,Autofac(控制反轉,即依賴注入),telerik.extern.mvc(后台管理用的界面,2.0后開始使用)。

下圖是nopcommerce版本3.4的源碼結構:

1、Libraries

Libaries文件夾下項目主要是一些公共庫代碼。

Nop.Core:封裝了項目要用的基礎核心類,接口。比如領域對象類,緩存類、接口,擴展方法等等。

Nop.Data:EF相關的數據訪問相關的類封裝和擴展。里面最關鍵的就是Mapping,Nop采用代碼API的形式來建立Model和數據庫表之間的映射,命名都是以“表名+Map”的形式。比如:

  1. using System.Data.Entity.ModelConfiguration;
  2. using Nop.Core.Domain.Blogs;
  3. namespace Nop.Data.Mapping.Blogs
  4. {
  5. public partial class BlogCommentMap : EntityTypeConfiguration<BlogComment>
  6. {
  7. public BlogCommentMap()
  8. {
  9. this.ToTable("BlogComment");
  10. this.HasKey(pr => pr.Id);
  11. this.HasRequired(bc => bc.BlogPost)
  12. .WithMany(bp => bp.BlogComments)
  13. .HasForeignKey(bc => bc.BlogPostId);
  14. this.HasRequired(cc => cc.Customer)
  15. .WithMany()
  16. .HasForeignKey(cc => cc.CustomerId);
  17. }
  18. }
  19. }

以后我會詳細的說明這個Mapping的怎么實現的以級這樣做的好處。

Nop.Services:真正的處理數據的業務層,都是通過面向接口編程,減少對具體實現的依賴。

2、Plugins

Plugins文件夾下是放的插件項目,你也可以按照規則開發屬於自己的插件。

3、Presentation

Presentation中文意思是呈現、表現的意思。也就是這文件夾下的項目都是解決方案的表示層。

Nop.Admin:后台管理

Nop.Web:前台Web項目

Nop.Web.Framework:Web及MVC相關擴展和公共類的封裝,比如:BaseController,Seo相關,主題Themes,autofac依賴注入DependencyRegistrart等等。

4、Tests

Tests下面放的都是對應項目的單元測試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM