文章目录
概述
NopCommerce源码架构详解-插件机制相关源码分析1。
内容
我们在软件开发的时候为了让软件本身有比较好的扩展性,而这个扩展又不会对原来的功能和代码进行破坏,这时就要用到软件的插件机制。也就是软件开发商要公布一些插件接口,让别人通过实现这些插件接口就可以为开发出软件本身不具有的插件功能。
插件机制是优秀软件必备的,插件听这名字就知道其作用,当我们需要的时候装上就可以用上插件为我们提供的功能,不需要就可以不用装或者卸载掉。软件中需要定义好插件所要的一些公共接口,而插件开发商只需要实现这些接口就行了。可以这样说,插件机制让软件功能更加丰富,可以完成一些个性化的功能,因为一个软件刚开发出来不可能满足所有人需求。NopCommerce也提供了插件机制,从今天开始来为大家分析一下nopCommerce插件机制相关源码及设计思想。
下面来看看工具生成的NopCommerce插件相关类的类图。

从上图可以看到比较核心的类有PluginDescriptor、PluginFinder、BasePlugin、PluginManager、PluginFileParser,除此之外就是一些抽象接口IPlugin、IPluginFinder、IComparable等等。
PluginDescriptor:插件描述类,其包含插件名字、作者、类型、所属分组及引用的程序集等信息和一些操作,比如获取插件的实例,比较插件等等。
PluginFinder:插件查找类,其包含插件可能性检测、获取Nop的全部或指定插件相关信息等。
BasePlugin:所有插件的基类,它实现了接口IPlugin,功能主要是插件的安装和卸载。
PluginManager:这个类可以说是Nop插件机制最核心类了,从它的命字就知道它的作用是插件管理,它不仅能获取全部插件相关的信息,而且还能标示插件的安装状态及操作插件的信息。
PluginFileParser:Nop的每一个插件的相关信息是通过文本文件的形式记录的,它自己规定了一定的格式。为了让Nop能够正常的解析、查找到插件,每一个插件都要按照这个格式写它自己的信息。比如我们打开项目的插件NivoSlider,在根目录有一个文件Description.txt,内容如下:
Group: Widgets FriendlyName: Nivo Slider SystemName: Widgets.NivoSlider Version: 1.05 SupportedVersions: 3.40 Author: nopCommerce team DisplayOrder: 1 FileName: Nop.Plugin.Widgets.NivoSlider.dll
这个文件的解析就是靠类PluginFileParser完成的。