NopCommerce架構(gòu)分析之(四)基于路由實現(xiàn)靈活的插件機制
NopCommerce支持靈活的插件機制,所謂Web系統(tǒng)插件,其實也就是可以像原系統(tǒng)的一部分一樣使用。
Web系統(tǒng)的使用方式就是客戶端發(fā)送一個請求,服務(wù)端進行解析。在asp.net MVC中對客戶請求的解析是通過路由的方式實現(xiàn)的。
所謂路由就是在客戶端發(fā)生請求時,對請求路徑的解析過程。
在Global.asax.cs中注冊所有路由類:
//register custom routes (plugins, etc) var routePublisher = EngineContext.Current.Resolve<IRoutePublisher>(); routePublisher.RegisterRoutes(routes);
IRoutePublisher:路由發(fā)布者,以主動的方式向系統(tǒng)添加路由。實體類為:RoutePublisher。
IRouteProvider:路由提供者,每個插件都有一個路由提供者,向系統(tǒng)中注冊路由。
路由發(fā)布者(IRoutePublisher)通過IOC在運行環(huán)境路徑中查找路由提供者,即查找所有繼承IRouteProvider的類。然后有各插件的路由提供者向系統(tǒng)中注冊此插件的路由。
PluginManager:插件管理器,負責加載插件的DLL,并保存所有插件信息。此管理器在系統(tǒng)初始化時開始啟動并通過Initialize方法加載所有插件。
IPluginFinder:插件查找者,在使用時從插件管理器中查找插件。
每一個插件都擁有自描述文件:Description.txt; 類PluginDescriptor負責保存解析后的插件描述或者說是此描述文件的解析后實體類。
每個插件都集成IPlugin接口,插件擁有安裝和卸載的功能。
~/App_Data/InstalledPlugins.txt:保存所有加載或安裝了的插件。
~/Plugins:安裝的插件所在目錄。
~/Plugins/bin:每一個插件都會在此處建立一個備份。
- NopCommerce架構(gòu)分析之(八)多語言支持
- NopCommerce架構(gòu)分析之(七)主題Theme皮膚管理器
- NopCommerce架構(gòu)分析之(六)自定義RazorViewEngine和WebViewPage
- NopCommerce架構(gòu)分析之(五)Model綁定Action參數(shù)
- NopCommerce架構(gòu)分析之(三)EntityFramework數(shù)據(jù)庫初試化及數(shù)據(jù)操作
- NopCommerce架構(gòu)分析(一)Autofac依賴注入類生成容器
- 使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能
- 基于nopCommerce的開發(fā)框架 附源碼
相關(guān)文章
在ASP.NET 2.0中操作數(shù)據(jù)之十六:概述插入、更新和刪除數(shù)據(jù)
本文主要介紹ASP.NET中插入、更新和刪除數(shù)據(jù)的原理,ObjectDataSource在頁面和潛在的數(shù)據(jù)之間扮演一個代理的角色,配合業(yè)務(wù)邏輯可以執(zhí)行Select()、Insert()、Update()和Delete()方法。2016-05-05ASP.NET MVC4入門教程(五):從控制器訪問數(shù)據(jù)模型
本文介紹ASP.NET MVC4中在創(chuàng)建控制器的時候,同時使用Entity Framework為模型生成增刪改查等方法,方便控制器調(diào)用。2016-04-04.Net?Core服務(wù)治理Consul使用服務(wù)發(fā)現(xiàn)
Consul是HashiCorp公司推出的開源工具,Consul由Go語言開發(fā),部署起來非常容易,只需要極少的可執(zhí)行程序和配置文件,具有綠色、輕量級的特點。Consul是分布式的、高可用的、?可橫向擴展的用于實現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置2022-01-01在ASP.NET 2.0中操作數(shù)據(jù)之四十二:DataList和Repeater數(shù)據(jù)排序(一)
本文主要介紹利用ObjectDataSource的Selecting事件進行DataList和Repeater數(shù)據(jù)排序的方法,DropDownList隱式的為我們將sort expression 和 direction保存在它的view state里,進行分頁時從view state中取出條件進行排序。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之十一:基于數(shù)據(jù)的自定義格式化
GridView, DetailsView, FormView的格式自定義可以有多種方法, 在本文中我們將用DataBound 和 RowDataBound兩種事件來完成,下面主要演示了貨幣、加粗、斜體、高亮的數(shù)據(jù)格式化。2016-05-05NopCommerce架構(gòu)分析之(三)EntityFramework數(shù)據(jù)庫初試化及數(shù)據(jù)操作
本文介紹IStartupTask,該類會在系統(tǒng)啟動時執(zhí)行,IStartupTask調(diào)用IEfDataProvider進行數(shù)據(jù)庫的初始化。2016-04-04在ASP.NET 2.0中操作數(shù)據(jù)之三:創(chuàng)建母版頁和站點導(dǎo)航
本文主要介紹在ASP.NET如何創(chuàng)建母版頁以及站點地圖等操作,母版頁的實現(xiàn)的功能有點類似自定義用戶控件,可以實現(xiàn)網(wǎng)站頁面統(tǒng)一的設(shè)計和布局。2016-04-04在ASP.NET 2.0中操作數(shù)據(jù)之四十七:用SqlDataSource控件插入、更新、刪除數(shù)據(jù)
本文主要介紹使用SqlDataSource控件完成插入、更新、刪除數(shù)據(jù)等操作,通過設(shè)置向?qū)В琒qlDataSource控件的InsertCommand, UpdateCommand和DeleteCommand屬性都會被賦以相應(yīng)的 INSERT, UPDATE和DELETE SQL語句,從而實現(xiàn)相應(yīng)的操作。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之二:創(chuàng)建一個業(yè)務(wù)邏輯層
本文主要介紹 ASP.NET 2.0 如何創(chuàng)建業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層主要定義一些業(yè)務(wù)規(guī)則,調(diào)用已經(jīng)定義好的數(shù)據(jù)庫訪問層代碼,將讀取、插入、修改以及刪除等方法應(yīng)用到合適的業(yè)務(wù)規(guī)則中。2016-04-04在ASP.NET 2.0中操作數(shù)據(jù)之六十八:為DataTable添加額外的列
本文介紹并使用TableAdapter向DataTable添加新的一列的方法和步驟,任何時候只要重新運行TableAdapter設(shè)置向?qū)?,用戶所做的所有定制都要被覆蓋,為避免出現(xiàn)這種情況,我們建議直接修改存儲過程。2016-05-05