NopCommerce架构分析之(四)基于路由实现灵活的插件机制

作者:WalsonTung 时间:2024-05-13 09:14:51 

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,路由,插件
0
投稿

猜你喜欢

  • python 装饰器的使用示例

    2021-05-15 00:52:09
  • 详解js文件通过python访问数据库方法

    2024-01-20 06:09:09
  • 获取Django项目的全部url方法详解

    2022-09-08 23:06:27
  • MySQL表级锁使用说明

    2024-01-23 04:10:07
  • python与c语言的语法有哪些不一样的

    2021-07-09 17:47:35
  • instanceof 内部机制探析

    2009-09-25 13:09:00
  • 详解python实现识别手写MNIST数字集的程序

    2021-05-01 13:17:40
  • python 特殊属性及方法详细解析

    2023-04-23 10:52:20
  • JS调用打印方法设置页眉页脚的实例

    2024-04-22 12:45:58
  • golang执行命令获取执行结果状态(推荐)

    2024-04-30 10:05:00
  • Python的shutil模块中文件的复制操作函数详解

    2023-04-13 16:59:22
  • 用js+cookie记录滚动条位置

    2024-06-05 09:11:02
  • javascript中利用柯里化函数实现bind方法【推荐】

    2024-05-02 17:29:26
  • 深入了解Python Opencv数据增强

    2023-10-27 05:00:01
  • 使用PHP批量生成随机用户名

    2023-07-22 13:10:10
  • Python实现二叉树前序、中序、后序及层次遍历示例代码

    2023-12-02 00:36:40
  • Python详解复杂CSV文件处理方法

    2021-04-05 11:12:02
  • SQL Server中identity(自增)的用法详解

    2024-01-24 22:33:50
  • 如何创建第一个Pygame程序

    2022-12-05 21:02:12
  • Python导出DBF文件到Excel的方法

    2023-03-12 20:50:15
  • asp之家 网络编程 m.aspxhome.com