nopcommerce是国外用.net开发的电商b2c开源项目,主要涉及技术包括了ef+mvc。

今天主要分析nop的插件机制。

什么是插件?插件是预先开发好的可以独立运行的功能模块,把单独的功能模块动态嵌入主项目这种模式我自称它为插件模式。

这种插件模式作用在于利于模块化编码,降低功能模块间耦合程度,增加模块功能的可扩展性。

废话扯完,现在主要说下插件的运行机制。简单总结的说,程序启动,动态加载各种插件的程序集,动态执行相应实现接口的代码逻辑。

插件主要涉及的类如下:

PluginManager----插件管理类负责 加载所有插件  记录通过文本形式安装 卸载插件记录

PluginFinder  -----插件信息搜集类 负责获取插件的具体描述信息

PluginFileParser--插件工具类 负责输出插件信息

BasePlugin  IPlugin   插件的接口与实现  主要包括安装和卸载以及插件描述信息的属性

程序加载前 ,先加载所有的插件,将所有插件放在一个静态变量之中,其中描述信息是从文本描述文件取的并转化成实体添加到插件集合中,后面的插件描述信息的查询都从中取之。

下面这句话,意思在global之前执行PluginManager.Initialize  加载所有插件,--这里有个添加信任文件的逻辑,现在没理解,日后补充。

[assembly: PreApplicationStartMethod(typeof(PluginManager), "Initialize")]

    安装插件的逻辑:

先插入插件定义描述信息到资源表中,输出插件名字到文本中

卸载插件的逻辑 与之相反

nopcommerce插件使用的更多相关文章

  1. NopCommerce插件学习

    在园子里看到这篇文章:http://www.cnblogs.com/haoxinyue/archive/2013/06/06/3105541.html写的非常好,我也是在此文章的基础上来一步步的学习N ...

  2. nopcommerce插件相关

    注意Description.txt中,以下字段必须配置当前可用.我抄人家代码的时候,人家是3.4   我也配成3.4,结果我的nop是3.7的,后台半天显示不出来插件,浪费了一下午.

  3. [转]NopCommerce MVC 插件机制分析

    原文地址:http://www.cnblogs.com/haoxinyue/archive/2013/06/06/3105541.html 基本原理 插件话的应用程序一般都是先定义插件接口,然后把插件 ...

  4. 教你一招 - Misc类型插件的妙用(附带插件源码)

    熟悉nopcommerce插件的朋友应该知道里面有一种Misc类型的插件,比如Nop.Plugin.Misc.WebServices和 Nop.Plugin.Misc.FacebookShop,继承自 ...

  5. NopCommerce源码架构

    我们承接以下nop相关的业务,欢迎联系我们. 我们承接NopCommerce定制个性化开发: Nopcommerce二次开发 Nopcommerce主题开发 基于Nopcommerce的二次开发的电子 ...

  6. nop 插件解析

    在计算领域,插件( plug-in or plugin)是将特定的功能增加到大型软件中的软件组件. nopCommerce插件用来扩展nopCommerce的功能.nopCommerce 有几种插件. ...

  7. 我的NopCommerce之旅(9): 编写Plugin实例

    一.基础介绍 ——In computing, a plug-in (or plugin) is a set of software components that add specific abili ...

  8. [转]NopCommerce中的多商店支持:权威指南

    [转]NopCommerce中的多商店支持:权威指南 多商店支持是最强大的nopCommerce功能之一.但究竟什么是多店支持?它是谁的?如何在nopCommerce中设置多个商店?在今天的帖子中,我 ...

  9. 基于DDD的.NET开发框架 - ABP模块设计

    返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...

随机推荐

  1. codevs 1183 泥泞的道路 01分数规划

    题目链接 题目描述 Description CS有n个小区,并且任意小区之间都有两条单向道路(a到b,b到a)相连.因为最近下了很多暴雨,很多道路都被淹了,不同的道路泥泞程度不同.小A经过对近期天气和 ...

  2. codeforces 631C. Report

    题目链接 按题目给出的r, 维护一个递减的数列,然后在末尾补一个0. 比如样例给出的 4 21 2 4 32 31 2 递减的数列就是3 2 0, 操作的时候, 先变[3, 2), 然后变[2, 0) ...

  3. VS Code - Debugger for Chrome

    VS Code - Debugger for Chrome调试JavaScript的两种方式   VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于 ...

  4. 几篇SIEM文章

    http://infosecnirvana.com/tag/siem-rule-types/ http://www.tripwire.com/state-of-security/security-da ...

  5. firefox的window.onerror没有详细的出错提示

    当在firefox浏览器的a.htm页面中使用script标签加载某a.js出错时,如果放置window.onerror事件处理方法时,此方法获取到的错误信息都是固定的: {0:"Scrip ...

  6. appledoc:Objective-C注释文档生成工具

    appledoc是帮助Objective-C开发者从特殊格式的源代码注释中生成类似apple资源代码帮助文档的命令行工具. 安装和使用都非常简单: 安装 git clone git://github. ...

  7. Android MediaPlayer Error -1004

    之前用Android自带的VideoView播放在线视频一直没问题的.今天突然碰到无法播放. MediaPalyer返回的错误代码是-1004,API文档上写的是:Bitstream is not c ...

  8. Cocos2d-x lua游戏开发之安装Lua到mac系统

    注意:mac ox .lua version :5.15 下载lua官网的lua, 注意:最好是5.15下面.5.2的lua不支持table的getn()方法,这让我情何以堪.(获取table长度.相 ...

  9. 关于给javascript对象添加、删除、修改对象的属性

    以下是自己总结的几种方法 利用动态特性 function Person(){}; var person = new Person(); person.name = 'yy'; person.gende ...

  10. URAL 1036(dp+高精度)

    Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Pract ...