插件架构1

来源:互联网 发布:a股数据购买 编辑:程序博客网 时间:2024/05/16 17:47
 

插件框架在一定程度上也叫微内核框架,它的本质就是希望提供一组最核心的功能,而其它功能都可以在此基础上通过类似插件的技术来扩展实现。

 

我在准备开发这个插件框架的时候,首先想到的问题就是,这个“内核”到底该保函哪些东西?插件之间存在什么样的交互?以及如何进行交互?

 

我的初步构想如下:

这个插件框架的最最基本的原则就是:简单,简单,还是简单。

所有插件通过一个系统服务来进行获取,该系统服务能够在每个插件中被容易获取到。

如果A插件需要B插件提供的功能,可以通过系统服务获取B插件,然后调用B插件提供的功能即可。

如果A插件发生了某个事情,可能某些插件关心该事件,但A并不能事先知道哪些插件关心该事件,那么A可以通过消息管理插件发送事件消息,而B插件则通过注册消息响应而达到事件的触发处理。

 

基本的机制有了,接下来就是另一个问题,在系统中,一个插件用什么来唯一标记它?

考虑这个问题的时候,我们需要假设一个前提,以后系统中可能存在多个插件提供同一功能点,而某个时候需要获取其中一个,而另些时候需要获取所有。

基于这样的假设,我们在插件上会冠以两个标签,一个是名称,另一个是功能点名称,例如PL::Inet

注意:名称不一定是唯一的,但我们哪里知道哪个该保留,哪个不该保留。

 

 

初步分析,我们得到了基本的模块边界范围:

 

内核: 管理插件加载、卸载

 

内核插件:   消息管理插件

日志插件(默认有文本日志输出器)

 

外层插件:   应用程序相关插件,包括界面插件

 

 

接下来的工作会按照如下步骤来进行:

1、 定义插件规范;

2、 定义插件配置描述规范;

3、 完成内核插件之日志插件

4、 完成内核

5、 完成消息管理插件

6、 完成大约5个简单的示例

 

 

所有代码已经上传到CSDN: http://download.csdn.net/detail/ybb_y1b1b1/3610538

后续如果代码有更新,会持续上传,并在这里做出说明。

 

2011.09.20 对代码进行了新的版本上传

http://download.csdn.net/detail/ybb_y1b1b1/3620886

添加了一个丢失的配置文件

对差价内核代码进行了部分注释

添加了一个测试插件,用于说明插件消息的处理过程。

这个版本的代码少打包了一个文件夹,太郁闷了,资源还不能修改,也不能自己做评论。这点CSDN做的不好。

这里需要感谢iicup这位朋友,是他在评论中指出了问题,感谢这样能够指出问题的人。

如果哪位朋友能够看到此文章,并也愿意浪费下自己的时间,请帮忙评论下此资源,告诉大家不要下此资源了,可以下载下边更新的版本。不管是谁,我先提前感谢了。

 

2011.09.21 添加了小工具插件示例工程

该工程创建了一个最小化到托盘的主插件,小工具插件可以注册托盘菜单。

源码下载:

http://download.csdn.net/detail/ybb_y1b1b1/3624562