nopcommerce插件使用
nopcommerce是国外用.net开发的电商b2c开源项目,主要涉及技术包括了ef+mvc。
今天主要分析nop的插件机制。
什么是插件?插件是预先开发好的可以独立运行的功能模块,把单独的功能模块动态嵌入主项目这种模式我自称它为插件模式。
这种插件模式作用在于利于模块化编码,降低功能模块间耦合程度,增加模块功能的可扩展性。
废话扯完,现在主要说下插件的运行机制。简单总结的说,程序启动,动态加载各种插件的程序集,动态执行相应实现接口的代码逻辑。
插件主要涉及的类如下:
PluginManager----插件管理类负责 加载所有插件 记录通过文本形式安装 卸载插件记录
PluginFinder -----插件信息搜集类 负责获取插件的具体描述信息
PluginFileParser--插件工具类 负责输出插件信息
BasePlugin IPlugin 插件的接口与实现 主要包括安装和卸载以及插件描述信息的属性
程序加载前 ,先加载所有的插件,将所有插件放在一个静态变量之中,其中描述信息是从文本描述文件取的并转化成实体添加到插件集合中,后面的插件描述信息的查询都从中取之。
下面这句话,意思在global之前执行PluginManager.Initialize 加载所有插件,--这里有个添加信任文件的逻辑,现在没理解,日后补充。
[assembly: PreApplicationStartMethod(typeof(PluginManager), "Initialize")]
安装插件的逻辑:
先插入插件定义描述信息到资源表中,输出插件名字到文本中
卸载插件的逻辑 与之相反
nopcommerce插件使用的更多相关文章
- NopCommerce插件学习
在园子里看到这篇文章:http://www.cnblogs.com/haoxinyue/archive/2013/06/06/3105541.html写的非常好,我也是在此文章的基础上来一步步的学习N ...
- nopcommerce插件相关
注意Description.txt中,以下字段必须配置当前可用.我抄人家代码的时候,人家是3.4 我也配成3.4,结果我的nop是3.7的,后台半天显示不出来插件,浪费了一下午.
- [转]NopCommerce MVC 插件机制分析
原文地址:http://www.cnblogs.com/haoxinyue/archive/2013/06/06/3105541.html 基本原理 插件话的应用程序一般都是先定义插件接口,然后把插件 ...
- 教你一招 - Misc类型插件的妙用(附带插件源码)
熟悉nopcommerce插件的朋友应该知道里面有一种Misc类型的插件,比如Nop.Plugin.Misc.WebServices和 Nop.Plugin.Misc.FacebookShop,继承自 ...
- NopCommerce源码架构
我们承接以下nop相关的业务,欢迎联系我们. 我们承接NopCommerce定制个性化开发: Nopcommerce二次开发 Nopcommerce主题开发 基于Nopcommerce的二次开发的电子 ...
- nop 插件解析
在计算领域,插件( plug-in or plugin)是将特定的功能增加到大型软件中的软件组件. nopCommerce插件用来扩展nopCommerce的功能.nopCommerce 有几种插件. ...
- 我的NopCommerce之旅(9): 编写Plugin实例
一.基础介绍 ——In computing, a plug-in (or plugin) is a set of software components that add specific abili ...
- [转]NopCommerce中的多商店支持:权威指南
[转]NopCommerce中的多商店支持:权威指南 多商店支持是最强大的nopCommerce功能之一.但究竟什么是多店支持?它是谁的?如何在nopCommerce中设置多个商店?在今天的帖子中,我 ...
- 基于DDD的.NET开发框架 - ABP模块设计
返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...
随机推荐
- easyui 验证控件 tooltip message显示位置
找了半天才发现是这个属性在控制,tipPosition:'left',官网那个demo,误人子弟.
- java 数组插入元素
import java.util.Arrays; public class AddArray { public static void main(String[] args) { int[] arr ...
- jQuery数据缓存data(name, value)详解及实现
一. jQuery数据缓存的作用 jQuery数据缓存的作用在中文API中是这样描述的:“用于在一个元素上存取数据而避免了循环引用的风险”.如何理解这句话呢,看看我下面的举例,不知道合不合适,如果你有 ...
- 使用PHP把下划线分隔命名的字符串 转换成驼峰式命名方式 , 把下划线后面的第一个字母变成大写
最近项目使用symfony框架,这个框架对数据库的操作在这个团队里使用的是ORM进行操作,说实话使用ORM的开发效率和运行效率不一定高多少,到是它的实体命名和现有数据库字段的命名不太一样,ORM实体属 ...
- 未能从程序集“System.ServiceModel, Version=3.0.0.0”中加载类型“System.ServiceModel.Activation.HttpModule” 的解决办法
未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“ ...
- rsyslog 基本组成
Facility 定义日志消息的来源,以方便对日志进行分类,facility 有以下几种: --kern 内核消息 --user 用户级消息 --mail 邮件系统消息 --daemon 系统服务消息 ...
- iso-开发基础知识-5-适配器
个人学习总结仅供参考:欢迎拍砖 1.适配器:用于连接两种不同种类的对象. 2.分为2种:类适配,对象适配. 3.委托(Delegate)模式属于对象适配器: 4.何时使用适配器模式 书中的这幅图更好的 ...
- CopyU!新插件 CopyPC2U正式发布!
CopyPC2U双向拷贝插件今天正式上线!该插件需要CopyU!较新版本的支持,可以帮助将文件从电脑自动的复制到移动设备上. 下载地址:http://kuai.xunlei.com/d/BiIvAED ...
- 简单天气应用开发——API接口
寒假回家无事,想到自学iOS开发已有一段时间,还没做过真正自己的应用,就起了做一个天气预报App的念头. 想到就做.天气预报第一步自然是找到好用的API接口来获取天气信息.在百度上搜索了一圈,找到的都 ...
- BZOJ 1005: [HNOI2008]明明的烦恼( 组合数学 + 高精度 )
首先要知道一种prufer数列的东西...一个prufer数列和一颗树对应..然后树上一个点的度数-1是这个点在prufer数列中出现次数..这样就转成一个排列组合的问题了.算个可重集的排列数和组合数 ...