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:每一个插件都会在此处建立一个备份。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索插件
, 路由
nopcommerce
nopcommerce 架构、nopcommerce架构分析、nopcommerce架构图、nopcommerce、nopcommerce教程,以便于您获取更多的相关知识。

时间: 2024-08-31 16:51:11

NopCommerce架构分析之(四)基于路由实现灵活的插件机制_自学过程的相关文章

NopCommerce架构分析之(三)EntityFramework数据库初试化及数据操作_自学过程

系统启动时执行任务:IStartupTask,启动时执行的任务主要是数据库的初始化和加载. IStartupTask调用IEfDataProvider进行数据库的初始化. IEfDataProvider,SqlCeDataProvider:获取数据连接工厂,不同类型数据库,连接工厂不同. 接口IStartupTask的实体类EfStartUpTask的实现如下: public class EfStartUpTask : IStartupTask { public void Execute() {

在ASP.NET 2.0中操作数据之二十三:基于用户对修改数据进行限制_自学过程

导言 很多Web程序都支持用户帐号,根据不同的登录用户提供不同的选项,报表等功能.例如,就我们的教程中,我们要允许供应商公司的一些账户能登录网站并更新它们的产品-包括产品名称和单价,或许还有供应商的信息,比如它们的公司名称,地址,以及联系人信息等等.此外,可能我们还想包含一些帐号留给我们自己公司用户,以便让它们能够登录并进行产品信息修改,比如股价,级别调整等等.我们的Web程序同时也可以允许匿名登录,但是仅仅让这些用户浏览数据.并包含一个系统用户,通过对ASP.NET页面中的数据控件能够进行数据

解读ASP.NET 5 &amp; MVC6系列教程(12):基于Lamda表达式的强类型Routing实现_自学过程

前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特性(Route和HttpXXX系列方法)来定义.本章,我们将讲述一种基于Lambda表达式的强类型类型. 这种方式的基本使用示例如下: services.Configure<MvcOptions>(opt => { opt.EnableTypedRouting(); opt.GetRoute("homepage", c =>

NopCommerce架构分析之(八)多语言支持_自学过程

系统支持的语言是有类:Language表示: 多语言资源对应的类为:LocalizedProperty: 当先选择某种语言存储在类中:GenericAttribute: 多语言可以导出为XML文件,当然也支持导出. IWorkContext及其实体类WebWorkContext为当前运行上下文:用户的登录信息以及一些上下文环境设置都保存在此类中. 具体包括:当前用户信息:CurrentCustomer:当前用户Cookie:货币:语言:税的类型:供应商等: 展现多语言资源的方式有几种: 一.在自

NopCommerce架构分析之(五)Model绑定Action参数_自学过程

asp.net MVC中Action参数不只是一些基本类型,也支持实体参数.那么从客户端传来的数据如何映射或转换成实体对象呢?就是通过实体绑定类ModelBinder.此系列类在请求转化为后台Controller的Action方法前,捕获传递过来的数据,并对其进行解析和转换,最终为实体类对象. 在系统启动前,Global.asax.cs中的方法Application_Start方法调用下面代码定义参数转换规则. //model binders ModelBinders.Binders.Add(t

NopCommerce架构分析(一)Autofac依赖注入类生成容器_自学过程

NopCommerce为了实现松耦合的框架设计目的,使用了IOC框架:Autofac.据有人测试,Autofac是性能很好的IOC工具. 1.在IOC中,组件首先需要在IOC中注册,有通过配置文件注册的.像Spring.net,也有通过特性注册的,像StructureMap,也有通过代理来注册的,像Autofac.但是IOC讲究一个原则,就是接口和实现分离.所有IOC就是生命某个具体类实现了某个接口.然后在使用时,系统从IOC中获取接口的实现类,并创建对象. 2.下面来看NopCommerce如

基于.NET平台常用的框架和开源程序整理_自学过程

自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继续补充这篇日志,日积月累,就能形成一个自己的组件经验库. 分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度. Redis:是一个高性能的KV数据库. 它的出现很大程度补偿了Mem

NopCommerce架构分析之(七)主题Theme皮肤管理器_自学过程

IThemeContext:皮肤上下文,支持桌面皮肤和移动段皮肤.其实体类为:ThemeContext; IThemeProvider:皮肤提供者,其实体类为ThemeProvider;皮肤提供者从皮肤配置文件中解析配置项,加载系统提供的所有皮肤方案,系统默认提供桌面干净皮肤(~/Themes/DefaultClean)和移动端皮肤(~/Themes/Mobile).ThemeConfiguration是对theme.config数据的解析对象. IThemeContext从IThemeProv

解读ASP.NET 5 &amp; MVC6系列教程(11):Routing路由_自学过程

新版Routing功能介绍 在ASP.NET 5和MVC6中,Routing功能被全部重写了,虽然用法有些类似,但和之前的Routing原理完全不太一样了,该Routing框架不仅可以支持MVC和Web API,还支持一般的ASP.NET5程序.新版的改变有如下几个部分. 首先,Routing系统是基于ASP.NET 5的,是一个独立于MVC的路由框架,而不是基于MVC的.MVC只是在上面扩展了一个快捷方式而已. 其次,在ASP.NET 5中,MVC和Web API控制器没有区别了,即合二为一了