最近一直在学习OSGI方面的知识。买了一本《OSGI原理和最佳实践》,可是还没有到。遗憾的是,OSGI目前的几个开源框架只支持Java,对C和C++都不支持的。可惜我们公司目前主要的开发语言还是c和c++,即便是引进OSGI,所得的好处范围有限。而我对松散耦合的模块化开发向往已久。查了一下OSGI对C++支持的好像是有一个开源项目,不过好像应用范围很小。而SCA标准中是有对C++实现模型的支持的,但是几个开源的框架目前还只支持JAVA。
昨天看了丁亮的转载的一篇博客《C/C++:构建你自己的插件框架
》,原文的链接:http://blog.chinaunix.net/u/12783/showart_662937.html
。看了一下里面讲的方法,自己倒是可以实现。所以有了构建自己的c/c++插件开发框架的想法。今天先写一下初步的设想。
C/C++插件开发框架的要素
BlueDavy有一篇介绍服务框架要素的文章(链接:http://www.blogjava.net/BlueDavy/archive/2009/08/28/172259.html
)。我的插件框架也要考虑、解决以下的几个问题:
1、如何注册插件;
2、如何调用插件;
3、如何测试插件;
4、插件的生命周期管理;
5、插件的管理和维护;
6、插件的组装;
7、插件的出错处理;
8、服务事件的广播和订阅(这个目前还没有考虑要支持);
其中有几个点很重要:1)插件框架要能够使模块松散耦合,做到真正的面向接口编程;2)框架要支持自动化测试:包括单元测试,集成测试;3)简化部署;4)支持分布式,模块可以调用框架外的插件。
采用的技术
插件框架要解决的一个问题就是插件的动态加载能力。这里可以使用共享库的动态加载技术。当然,为了简单,第一步只考虑做一个linux下的插件框架。
总体结构
框架的总体结构上,参考OSGI的“微内核+系统插件+应用插件”结构。这里要好好考虑一下把什么做在内核中。关于微内核结构,以前我做个一个微内核流程引擎,会在后面有时间和大家分享。
框架中模块间的数据传送,有两种解决方法:一是普元采用的XML数据总线的做法。优点是扩展性好,可读性好。但是速度有些慢。二是采用我熟悉的信元流。优点的效率高,访问方便,但是可读性差一点,另外跨框架的数据传送,需要考虑网络字节序的问题。
对于框架间的通信,通过系统插件封装,对应用插件隐藏通信细节。
部署
努力做到一键式部署。
分享到:
相关推荐
C语言/C++集成开发环境 Dev-C++。一款优秀的C/C++集成开发软件。
C_C++语言硬件程序设计——基于TMS320C5000系列DSP
c/c++完整视频教程(三)——–Linux服务器编程
——代码完成于2021-11-12 整体思路: 用两个数组分别模拟 A->B 和B->A间通讯的信道。A、B两主机各自拥有独立线程。线程move用来模拟信道中信号的移动。线程show用于打印信道。其中线程move和show detach()后作为...
C语言C++零基础到实战——大新企业内部技术免费公开课文档.doc
本程序是采用带头结点的单向循环链表写成的,当指针指到要出列的结点时,先输出结点的序列号,再删除之,直到所有结点都出列完
腾讯后端T9开发学习路线图,内容路线非常详细。可以作为自身学习参考。 Linux C/C++ 后端开发学习路线。
大一上学期,C语言/C++结课大作业——交并补运算+Gui界面
C语言/C++ 烟花表白代码 C语言/C++ 烟花表白代码 C语言/C++ 烟花表白代码 C语言/C++ 烟花表白代码
虚拟机的设计与实现——C/C++.pdf
1. 熟悉 C/C++ 的人员 2. 正在做关于 Qt 可视化却无从下手的人员 3. 希望做一个小项目,但没有合适的框架的人员 我主要能学到什么: 1. 该项目包含 鼠标点击响应与绘图相关的算法 2. 该项目包含 创建、删除、编辑 ...
c/c++中文帮助文档(API),包含c和c++所有的库函数
在sublime 和其他需要自己配置c/c++环境时所需要的文件
简要实现了C/C++中调用Lua脚本的技术。 通过用Lua脚本输出一个便签,来研究C/C++与Lua的交互技术。
CDT全称C/C++ Development Toolkit,是完全用 Java 实现的开放源码项目。对于我们入门者来说,可以认为它就是Eclipse中使用的一个插件,可以用来开发C/C++项目
“Turbo C++ 3.0”软件是Borland公司在1992年推出的强大的——C语言程序设计与C++面向对象程序设计 的集成开发工具。它只需要修改一个设置选项,就能够在同一个IDE集成开发环境下设计和编译以标准 C 和 C++ 语法设计...
虚拟机的设计与实现——C/C++
VS CODE离线安装C/C++扩展包,具体安装方法可参考我的博客。
C/C++程序员实用大全-C/C++最佳编程指南
为了考虑到程序兼容性,通常我们编译C/C++程序会编译32位和64位两个版本,像VisualStudio,devcpp这类集成开发环境确实不用自己设置就能做到,但是他们都有不方便的地方,如VisualStudio的占用空间太大,如果初学C/...