OSGI framework 分三层: module,lifecycle和service. 如下图所示:
- module层: 关注package和代码共享
- lifecycle层: 关注运行时模块的管理
- service层: 关注模块间的交互和通信
(一)module层
module的概念: module被称作bundle, 一个bundle用一个jar文件来表示,jar文件中包含class文件,自他资源文件(例如jpg)和metadata文件(MANIFEST.MF). bundle不但可以声明自己是否外部可见,而且还可以声明依赖的package(其他的bundle).
(二)lifecycle层
这一层定义了module生命周期的一些操作:install,update,start,stop,uninstall. 这些操作可以动态的对模块进行管理. framework可以动态的加载和管理bundle. 服务的请求者和服务的提供者可以通过framework来发布和请求需要的服务.
(三)服务层
服务层支持和促进了非常灵活的编程模型:面向服务的编程:面向服务的发布,查找和绑定. 服务提供者向服务注册机构发布服务,服务的客户端(服务请求者)通过服务注册机构查找可用的服务. 只是这种服务是在单个的虚拟机内的(SOA in a VM). OSGI服务就是java中的接口.