標籤:
很多人都說通過閱讀、學習大神們高品質的代碼是提高自己技術能力最快的方式之一。我覺得通過閱讀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”的形式。比如:
- using System.Data.Entity.ModelConfiguration;
- using Nop.Core.Domain.Blogs;
- namespace Nop.Data.Mapping.Blogs
- {
- public partial class BlogCommentMap : EntityTypeConfiguration<BlogComment>
- {
- public BlogCommentMap()
- {
- this.ToTable("BlogComment");
- this.HasKey(pr => pr.Id);
- this.HasRequired(bc => bc.BlogPost)
- .WithMany(bp => bp.BlogComments)
- .HasForeignKey(bc => bc.BlogPostId);
- this.HasRequired(cc => cc.Customer)
- .WithMany()
- .HasForeignKey(cc => cc.CustomerId);
- }
- }
- }
以後我會詳細的說明這個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下面放的都是對應項目的單元測試。
NopCommerce源碼架構詳解--初識高效能的開源商城系統cms