赞
踩
首先澄清一件事情,OSGi是一种指导软件设计的方式,而不是某种特定语言与框架,它能指导你更好的设计软件。OSGi只是一种规范,更像设计模式这种知道如何编程。而微服务架构是OSGi的一个特例应用,指明了Service Core与Extension Bundles(先有OSGi,后有微服务)。虽然现在OSGi规范由Java全权负责,但是OSGi并不是Java的特性、它适用于所有语言!!!
由于没有查阅相关OSGi首次提出的文献,以下是OSGi的实例框架发展点,此处仅做参考:
结论:OSGi大概是2000前后的产物,是OOD设计方法的延伸与解决OOD方式下软件复杂程度的技术。(很难标明其与OOD的关系,而且现有OSGi与其名称“Open Service Gateway Initiative”一点关联都没有)。面向OOD的设计原则形成的Classes模块,会产生很多的Classes关联从而增加组合Classes的软件的复杂程度。而OSGi更像以动态组合的方式划分模块,从而指导各个Classes组合提供功能,从更高的层级指导整体软件降低复杂程度。当然OSGI也可以不基于Classes(完全取决于你的心情)。
关于OSGi不提及“Open Service Gateway Initiative”,这本应是组合各种网络设备的规范。其早期具有的特性:
2000年左右Java将此规范引入到开发框架中,其中最重要的概念:仿照OSGi网络设备规范,通过的软件功能的划分实现不同服务目标的模块,通过组合功能模块实现整体软件的思维。引入OSGi规范的软件便有了如下特点:
现有OSGi规范架构图如下:
Native Operating System:本地操作系统。
Java VM:Java虚拟机平台环境。
Execution Environment:基于平台特性的运行环境。
Modules:Classes模块基础库层。
Life Cycle:Bundles生命周期管理层。
Service:提供Bundles的访问服务。
Security:框架安全层,负责整个框架的安全。
Bundles:功能业务捆绑包。
QtCreator PluginFramework(tQtCretorPlugin),剥离的QtCreator插件框架(仅本地的OSGi)
CTK PluginFramework(CtkCreator),剥离的CTK插件框架(仅本地的OSGi)。
CppMicroService,Cpp微服务框架(支持本地OSGi,远端模块实验性功能)
共有天生缺陷:
CTK框架图如下:
支持的层级:
缺失的层级:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。