NopCommerce支持靈活的插件機(jī)制,所謂Web系統(tǒng)插件,其實(shí)也就是可以像原系統(tǒng)的一部分一樣使用。
Web系統(tǒng)的使用方式就是客戶端發(fā)送一個(gè)請(qǐng)求,服務(wù)端進(jìn)行解析。在asp.net MVC中對(duì)客戶請(qǐng)求的解析是通過(guò)路由的方式實(shí)現(xiàn)的。
所謂路由就是在客戶端發(fā)生請(qǐng)求時(shí),對(duì)請(qǐng)求路徑的解析過(guò)程。
在Global.asax.cs中注冊(cè)所有路由類(lèi):
//register custom routes (plugins, etc)
var routePublisher = EngineContext.Current.ResolveIRoutePublisher>();
routePublisher.RegisterRoutes(routes);
IRoutePublisher:路由發(fā)布者,以主動(dòng)的方式向系統(tǒng)添加路由。實(shí)體類(lèi)為:RoutePublisher。
IRouteProvider:路由提供者,每個(gè)插件都有一個(gè)路由提供者,向系統(tǒng)中注冊(cè)路由。
路由發(fā)布者(IRoutePublisher)通過(guò)IOC在運(yùn)行環(huán)境路徑中查找路由提供者,即查找所有繼承IRouteProvider的類(lèi)。然后有各插件的路由提供者向系統(tǒng)中注冊(cè)此插件的路由。
PluginManager:插件管理器,負(fù)責(zé)加載插件的DLL,并保存所有插件信息。此管理器在系統(tǒng)初始化時(shí)開(kāi)始啟動(dòng)并通過(guò)Initialize方法加載所有插件。
IPluginFinder:插件查找者,在使用時(shí)從插件管理器中查找插件。
每一個(gè)插件都擁有自描述文件:Description.txt; 類(lèi)PluginDescriptor負(fù)責(zé)保存解析后的插件描述或者說(shuō)是此描述文件的解析后實(shí)體類(lèi)。
每個(gè)插件都集成IPlugin接口,插件擁有安裝和卸載的功能。
~/App_Data/InstalledPlugins.txt:保存所有加載或安裝了的插件。
~/Plugins:安裝的插件所在目錄。
~/Plugins/bin:每一個(gè)插件都會(huì)在此處建立一個(gè)備份。
您可能感興趣的文章:- NopCommerce架構(gòu)分析之(八)多語(yǔ)言支持
- NopCommerce架構(gòu)分析之(七)主題Theme皮膚管理器
- NopCommerce架構(gòu)分析之(六)自定義RazorViewEngine和WebViewPage
- NopCommerce架構(gòu)分析之(五)Model綁定Action參數(shù)
- NopCommerce架構(gòu)分析之(三)EntityFramework數(shù)據(jù)庫(kù)初試化及數(shù)據(jù)操作
- NopCommerce架構(gòu)分析(一)Autofac依賴(lài)注入類(lèi)生成容器
- 使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能
- 基于nopCommerce的開(kāi)發(fā)框架 附源碼