插件架构1

 

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

 

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

 

我的初步构想如下:

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

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

如果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

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值