nopcommerce插件机制是相当优秀的,所以就分析一下然后拿来所用,集成到自己的网站架构里。写篇小文记录一下。不足和错误之处还望指正,nop版本2.5

1.Nop.Core.Plugins核心文件夹

文件目录:

这里面是Plugins的基类文件夹,实现插件机制的核心部分。

IPluginFinder.cs接口:

获取插件的信息接口,在ioc里的Nop.Web.Framework.DependencyRegistrar注册此接口。

系统启动的时候会加载到内存里。

//plugins
builder.RegisterType<PluginFinder>().As<IPluginFinder>().InstancePerHttpRequest();

 IPlugin.cs:

插件的操作接口,主要有设置插件的属性信息,安装插件接口,卸载插件接口。

BasePlugins.cs 实现IPlugin.cs的方法。

PluginDescriptor.cs  插件的实体类,包含了插件的版本、描述,类型,文件名称,作者,等等一系列状态。

PluginFileParser。cs 包含对插件的实体操作方法,主要是写入插件的描述信息。

PluginFinder.cs 加载所有的插件,并获取它们的信息.

PluginManager.cs 插件管理的主类,看里面的注释,它的插件机制应该是参考的Umbraco这个cms的。

2.自定义插件

在这里我演示一个空的插件,本来是写抓取程序的,时间关系,没有做 了。插件名称,Nop.Plugin.Crawler

第一步:新建一个类库项目,而不是mvc应用项目。

第二步:在你的项目里添加需要的文件夹和文件:

Controllers,必选,控制器

Models,可选,如果你的项目很简单的话。

Views,可选但是一般情况下都需要有个界面的,放razor模板的.

Description.txt,这个必须要,插件的版本描述信息。内容如下

Group: Crawler
FriendlyName:Crawler
SystemName: Nop.Plugin.Crawler
Version: 1.00
SupportedVersions: 2.50
Author: nopCommerce team
DisplayOrder: 1
FileName: Nop.Plugin.Crawler.dll

在它上面点右键设置属性,如下图

Notes.txt ,这个是插件的备注信息,描述了插件的文件位置和一些注意事项。

RouteProvider.cs,路由文件,继承自Nop.Web.Framework.Mvc.Routes.IRouteProvider

View Code

using System.Web.Mvc;
using System.Web.Routing;
using Nop.Web.Framework.Mvc.Routes;namespace Nop.Plugin.Crawler
{public partial class RouteProvider : IRouteProvider{public void RegisterRoutes(RouteCollection routes){routes.MapRoute("Nop.Plugin.Crawler","Plugins/Crawler/Index",new { controller = "Crawler", action = "Index" },new[] { "Nop.Plugin.Crawler.Controllers" });}public int Priority{get{return 0;}}}
}

web.config,.net配置文件。

CrawlerController.cs 在我的控制器里定义了一个返回简单页面的方法。

using System.Web.Mvc;
using Nop.Web.Framework.Controllers;namespace Nop.Plugin.Crawler.Controllers
{[AdminAuthorize]public class CrawlerController : Controller{public ActionResult Index(){return View("Nop.Plugin.Crawler.Views.Index");}}
}

大家注意了,返回的View里的view路径是插件里的视图路径,在view的Index.cshtml点右键设置的属性,cshtml是编译到dll里的

还有整个插件的属性,在插件项目上点右键设置输出属性

最后设置引用进来的dll文件属性。这样输出dll文件的时候不会把其他乱七八糟的文件也拷贝过来了。

在插件上点右键生只输出这三个文件

3.最后一步在Nop.Web的InstalledPlugins.txt里添加插件

插件名称不能重复,可以自定义。这里我的取的名字和插件项目名称相同没什么特殊要求。

后台插件预览就可以看到了。

原文来自:http://www.jqpress.com/post/178.aspx

独立博客:http://www.jqpress.com

转载于:https://www.cnblogs.com/jqbird/archive/2012/05/31/2528479.html

nopcommerce插件深度剖析相关推荐

  1. 唯一插件化Replugin源码及原理深度剖析--插件的安装、加载原理

    上一篇 唯一插件化Replugin源码及原理深度剖析–唯一Hook点原理 在Replugin的初始化过程中,我将他们分成了比较重要3个模块,整体框架的初始化.hook系统ClassLoader.插件的 ...

  2. 《AngularJS深度剖析与最佳实践》一1.1 环境准备

    本节书摘来自华章出版社<AngularJS深度剖析与最佳实践>一书中的第1章,第1.1节,作者 雪狼 破狼 彭洪伟,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...

  3. 《AngularJS深度剖析与最佳实践》一 2.4 控制器

    本节书摘来自华章出版社<AngularJS深度剖析与最佳实践>一书中的第2章,第2.4节,作者 雪狼 破狼 彭洪伟,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...

  4. 从零开发一款轻量级滑动验证码插件(深度复盘)

    关注并将「趣谈前端」设为星标 每天定时分享技术干货/优秀开源/技术思维 github地址: https://github.com/MrXujiang/react-slider-vertify 之前一直 ...

  5. 【云驻共创】华为云云原生之Kubernetes网络架构原理深度剖析(上)

    文章目录 前言 一.Kubernetes诞生背景 1.云原生的概念 2.云原生架构 3.Kubernetes(k8s) 二.Kubernetes基本网络模型剖析 1.概念厘清 1.1 二层桥接 VS ...

  6. 云原生钻石课程 | 第2课:Kubernetes 技术架构深度剖析

    点击上方"程序猿技术大咖",关注并选择"设为星标" 回复"加群"获取入群讨论资格! 本篇文章来自<华为云云原生王者之路训练营>钻 ...

  7. 深度剖析E680G开发三.移植OPIE操作系统(上)

    深度剖析E680G开发三.移植OPIE操作系统(上) 草木瓜 20060918 一.前言         凡事我图写的文章,往往比较内容纵深,范围却很窄,注重实际操作.原因 很简单,水平有限,还达不到 ...

  8. 云原生钻石课程 | 第5课:Kubernetes存储架构原理深度剖析(下)

    点击上方"程序猿技术大咖",关注并选择"设为星标" 回复"加群"获取入群讨论资格! 本篇文章来自<华为云云原生王者之路训练营>钻 ...

  9. 物联网新零售项目 售货机“五脏六腑”深度剖析

    第9章 售货机"五脏六腑"深度剖析 课程目标 理解售货机业务 完成嵌入式数据库h2集成开发 完成售货机emqt集成开发 完成售货机和服务器数据同步,价格变动,出货,补货等业务开发 ...

最新文章

  1. 如何通过 Scratch 教小朋友编程思维?
  2. 六 装饰模式(Decorator)——设计模式学习笔记
  3. Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结
  4. win10系统的定位服务器,Win10系统无法开启定位功能的原因及解决方法
  5. 《天天数学》连载34:二月三日
  6. 铜陵高考2021年成绩查询,滁州高考成绩查询入口2021
  7. 软件测试为什么要学python_第一章 为什么要学习软件测试
  8. office2007卸载不干净 无法安装office64位的版本
  9. 2021Java春招面试:看完这篇文终于搞明白了
  10. Nodejs 微信加密消息开发
  11. STM32F030C8T6 IAP 开发记录
  12. java 中文分词转拼音_java 支持分词的高性能拼音转换工具, 速度是 pinyin4j 的两倍...
  13. 【OpenCV】中的鱼眼相机及其标定
  14. Linux——MySQL高可用-PXC架构
  15. QQ和360干起来了,中国互联网2大服务商进行白刃战
  16. 面试不慌,拿这70张思维导图,怒怼面试官
  17. java和ansys,HumanResourceManSys
  18. EAS 销售出库单上的部门 显示规则
  19. 深度技术 GHOST XP SP3 快速装机专业版 V9.9
  20. 让gitee支持SVN

热门文章

  1. 计算机出现全部英文如何解决,电脑打开后出现很多英文怎么处理
  2. linux dma 拷贝内存数据_原来 8 张图,就可以搞懂「零拷贝」了
  3. 2020-08-03 手动编译Qt库(msvc2019版本)
  4. 正版Fiddler下载地址
  5. [短评]企业裁员行为对整个社会的正面意义
  6. 浅析GDAL库C#版本支持中文路径问题
  7. 插上翅膀,让Excel飞起来
  8. Flutter之Windows环境搭建
  9. 记一次mysql_query(): xxx is not a valid MySQL-Link resource
  10. Go操作MySql Memache Mongodb