插件架构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
- 插件架构1
- 插件式的应用程序架构模型(1)
- 插件架构实战
- 插件架构简介
- SharpDevelop插件架构初探
- 关于插件架构
- android_插件架构
- 插件架构体系
- bootstrap:javascript插件架构
- 插件式架构设计
- Android插件化架构
- Android插件化架构
- 改进的C#插件架构
- C#实现插件式架构
- 插件式架构设计演义
- .net插件式架构系统
- 学习插件架构(一)
- 学习插件架构(一)
- IIS6和tomcat6的整合,测试成功并域名成功解析
- 递归和迭代的区别和联系
- python中的unicode编码
- SQL取出第 m 条到第 n 条记录的方法
- DIV+CSS页面设计中的IE6的文字溢出BUG
- 插件架构1
- 如何影响别人
- 插件框架2 插件规范
- jsp Hibernate 函数简介
- 配Hibernate会遇到的常见问题
- 当代大学生应该塑造自己的独特性
- 插件框架3 插件配置描述规范
- 插件框架4 内核插件之日志插件
- 2011东软校园招聘笔试题部分知识点总结——语言部分(C/C++)