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. 公选网站作业4_2.php

    序:   此实验的功能是只有已经登陆或者已经注册的用户才有发表留言的资格,否则只能够浏览留言. 1.  主要文件: 4_2login.html// 登陆的主页面 4_2login.php  //处理登 ...

  2. svn添加强制注释,pre-commit结合python

    鉴于组内有些人在提交代码的时候并不写注释,而且没有固定格式,所以准备给svn提交时增加强制注释. 首先找到代码库里的hooks目录,正常建svn库的时候都有这个目录.进入hooks目录,找到pre-c ...

  3. Xcode 那些简单实用的插件推荐

    古人云“工欲善其事必先利其器”,打造一个强大的开发环境,是立即提升自身战斗力的绝佳途径!   晾一下我的武器库,欢迎大家选用:)     全能搜索家CodePilot 2.0 ------------ ...

  4. vs 2013下自定义ASP.net MVC 5/Web API 2 模板(T4 视图模板/控制器模板)

    vs 2013下自定义ASP.net MVC 5/Web API 2  模板(T4 视图模板/控制器模板): Customizing ASP.NET MVC 5/Web API 2 Scaffoldi ...

  5. Java知识点复习

    总结下java的知识点 final 关键字-方法:不能被子类重写(override)-变量:不能被修改-类:不可以被继承,派生子类 finally 关键字与try/catch语句配合使用,即使有异常抛 ...

  6. js 定义类对象

    //定义类     //方式一     function A_class(arg1,arg2){         this.arg1=arg1;         this.arg2=arg2;     ...

  7. Arcgis for javascript不同的状态下自己定义鼠标样式

    俗话说:爱美之心.人皆有之. 是的.没错,即使我仅仅是一个做地图的,我也希望自己的地图看起来好看一点. 在本文,给大家讲讲在Arcgis for javascript下怎样自己定义鼠标样式. 首先.说 ...

  8. 倒计时IE6+

    很简单的 下面是我为了做多个倒计时更改之后的 dome 下载链接   兼容 IE7以上 IE6没测试应该没问题 http://yunpan.cn/cf29rxmGKuMyJ  提取码 ca61

  9. webform 不实用office控件导出excel StringBuilder 类型拼接字符串表格导出excel

    StringBuilder sb = new StringBuilder(); sb.AppendLine("<meta http-equiv=\"Content-Type\ ...

  10. iOS网络开发-AFNetworking请求asp.net WebService

    看到园子有位朋友需要使用AFN框架请求 WebService,所以就整理了一下,demo下载链接在底部 编写WebService可以看这篇博客 http://www.cnblogs.com/linmi ...