设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

OSGi和C++

2013-12-16 11:54| 发布者: joejoe0332| 查看: 3644| 评论: 0|原作者: 伯乐在线|来自: 伯乐在线

摘要:   2011年 9月我参加了OSGi社区在达姆施塔特的会议,并且有机会与其他与会者探讨本机c++实现的OSGi规范的现状。在这一事件之前我也一直想写一篇博客,来描述关于当前实现OSGi规范的现状和努力——类似于C / c++实现 ...


CTK 插件框架


  CTK插件框架是第三个使用C++重写类OSGI的组件框架,由德国癌症研究中心医药和生物信息技术部门开发的。第一个版本是在2007/2008年期间开发的一个更大框架OpenCherry的一部分,主要是提供了基于Eclipse RCP的C++组件模型(类似于Equinox)。项目后来被命名为BlueBerry,成为MITK应用程序框架的基础(Blueberry自身是一个真正的应用程序平台,并不是针对特定应用的),Blueberry中OSGI相关的C++代码在2009年被重写,并形成了现在的CTK插件框架


  CTK插件框架是基于QT core库的,实现了几乎完整的OSGI框架API。它使用了QT的插件系统,资源系统和信号、槽机制来支持所有的OSGI框架功能实现,此外,CTK也提供了一些OSGI可选服务的实现。

 

nOSGI


  nOSGI是另一个C++实现的针对Posix系统的OSGI项目。根据这个博客的评论显示,该项目最早在2009年开发的。该项目的作者也写了一份非常棒的论文,阐述了将OSGI转换为一个原生系统(POSIX)的可行性。


  nOSGI尤其专注于建模互相捆绑软件包的依赖关系(见前面论文中C++软件包的定义),使用了在运行时通过修补的DSO的ELF头。同时,该项目也提供了一个OSGI的控制台来和运行环境交互。

 

Celix

  2010年,Celix作为Apache孵化器的一个项目被创建(提案)。最初是由Luminis用C开发的一个OSGI实现。Celix主要关注尽可能参照OSGI的API实现,并且实现JAVA OSGI 组件和使用Celix原生C组件的互操作性问题。


  Celix同样也提供了一个OSGI控制台和一个日志服务实现,另外,Celix项目团队还试图形成一个C\C++ OSGI开发社区,并号召开源社区来响应这些项目(见邮件列表)。

 

对比


  我会提供上述项目的一个高层的比较。请注意,尽管我尽力收集准确的数据,不过仍然可能存在不准确和错误之处。这些数据来源于以下地方:


  • Poco OSP:官方 API 文档 (自 29/03/2012) 和评估软件包 2011_2.
  • SOF: 源码 版本1.3 (revision 11090)和站点在线文档.
  • CTK: 源码(Git hash 233893) 和站点在线文档(from 29/03/2012).
  • nOSGi: 源码(SVN revision 8).


  下面的表格列举了各项目支持的平台,许可证信息,实现语言和创建日期(根据目前能确定的信息)。


  •  

    Supported Platforms

    License

    Language

    Created

    Poco OSP

    Linux, Windows, Mac OS, QNX Commercial C++ 2007 (?)1
    SOF Linux, Windows BSD (?)2 C++ 2008
    CTK Linux, Windows, Mac OS Apache License 2.0 C++ 2009
    nOSGi POSIX GPLv3 C++ 2009
    Celix Linux3 Apache License 2.0 C 2010
  • 1. 来自项目白皮书的最早版权声明时间。
  • 2. 来自SourceForge项目的描述信息,不过代码中没有相应的许可证信息。
  • 3. 该项目支持跨平台,不过看起来主要面向linux.


  这五个OSGI框架实现在很多方面存在差异,下面的表格会总结这些项目的下述方面特性:


  1. 服务查询语言,查询服务中组件上下文,并允许使用过滤表达式添加服务监听(根据服务属性)
  2. 服务/组件记录器。提供使用类来跟踪服务和组件的变更(基础上说,提供了Tracker规范的实现)。
  3. 组件在线升级。允许在运行中升级组件
  4. 类型安全的服务。提供一种机制,允许将一个服务实例安全地转换为一个实现的接口。
  5. 线程安全性。线程安全的OSGI框架API
 

Service Query Language

Service/Bundle Tracker

Bundle Updates

Type-safe Services

Thread-safe

Poco OSP

Yes No/No Yes Yes Yes
SOF No Yes/No No Yes (Yes)1
CTK Yes (RFC1960) Yes/Yes Yes Yes Yes
nOSGi (Yes)2 (RFC1960) No/No Yes No No
Celix Yes (RFC1960) Yes/No Yes No Yes

1.线程安全性需要用户提供一个定制的线程策略类作为启动的一个模版参数传递进去。

2.仅仅支持注册的服务{敏感词}



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部