NopCommerce架构分析之(四)基于路由实现灵活的插件机制
NopCommerce支持灵活的插件机制,所谓Web系统插件,其实也就是可以像原系统的一部分一样使用。
Web系统的使用方式就是客户端发送一个请求,服务端进行解析。在asp.net MVC中对客户请求的解析是通过路由的方式实现的。
所谓路由就是在客户端发生请求时,对请求路径的解析过程。
在Global.asax.cs中注册所有路由类:
//register custom routes (plugins, etc) var routePublisher = EngineContext.Current.Resolve<IRoutePublisher>(); routePublisher.RegisterRoutes(routes);
IRoutePublisher:路由发布者,以主动的方式向系统添加路由。实体类为:RoutePublisher。
IRouteProvider:路由提供者,每个插件都有一个路由提供者,向系统中注册路由。
路由发布者(IRoutePublisher)通过IOC在运行环境路径中查找路由提供者,即查找所有继承IRouteProvider的类。然后有各插件的路由提供者向系统中注册此插件的路由。
PluginManager:插件管理器,负责加载插件的DLL,并保存所有插件信息。此管理器在系统初始化时开始启动并通过Initialize方法加载所有插件。
IPluginFinder:插件查找者,在使用时从插件管理器中查找插件。
每一个插件都拥有自描述文件:Description.txt; 类PluginDescriptor负责保存解析后的插件描述或者说是此描述文件的解析后实体类。
每个插件都集成IPlugin接口,插件拥有安装和卸载的功能。
~/App_Data/InstalledPlugins.txt:保存所有加载或安装了的插件。
~/Plugins:安装的插件所在目录。
~/Plugins/bin:每一个插件都会在此处建立一个备份。
相关文章
在ASP.NET 2.0中操作数据之六十五:在TableAdapters中创建新的存储过程
本文主要讲解使用TableAdapter设置向导自动创建增删改查的存储过程,虽然自动创建存储过程可以节省时间,但他们会包含一些无用的参数,下节我们会介绍TableAdapter使用现有的存储过程。2016-05-05
在ASP.NET 2.0中操作数据之六十六:在TableAdapters中使用现有的存储过程
虽然通过TableAdapter向导可以自动的生成存储过程,但是在某些时候我们需要使用现有的存储过程。本文将讲解如何在Visual Studio环境里手动添加存储过程,并引导TableAdapter的方法使用这些存储过程。2016-05-05
在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数据
在前面的教程里,我们用ObjectDataSource控件充分的将表现层和数据访问层(DAL)分开来。在这篇教程里我们看看怎样在一个表现层和数据访问层区分的不是很严格的简单程序中使用SqlDataSource控件。2016-05-05
在ASP.NET 2.0中操作数据之六十三:GridView实现批量删除数据
本文主要介绍在GridView控件中包含一个checkbox列来实现复选多条数据,在批量删除按钮的事件中通过for循环来一一删除。2016-05-05
解读ASP.NET 5 & MVC6系列教程(8):Session与Caching
这篇文章主要介绍了ASP.NET 5 中的Session与Caching配置和使用,需要的朋友可以参考下2016-06-06


最新评论