osgi是什么(简单概括)

来源:互联网 发布:java中方法的重写 编辑:程序博客网 时间:2024/05/15 13:10

OSGi是一个面向服务框架的规范。服务是以插件的形式组织的,每一个插件在OSGi规范里被称为Bundle,即服务包,Bundle将向外界提供功能或服务。Bundle间有两种依赖,一种是设计时依赖,即一个Bundle引用了另一个Bundle的某些类;另一种是运行时依赖,这种依赖是通过可管理的服务实现的。


 Bundle设计时依赖由配置文件的Runtime(OSGi.NET引入的)节点配置,主要有 AssemblyPath(OSGi.NET引入的)、FragmentHost、Import、Export、Require和DynamicImport定义,Bundle在引用设计时依赖的类的时候是通过其自定义的类加载机制实现的。AssemblyPath定义了Bundle本地所拥有的类型集合;FragmentHost指定这个Bundle的宿主Bundle,本Bundle称为片段Bundle,片段 Bundle的所有信息会集合到宿主Bundle中;Import表示一个Bundle引用了另一个Bundle中某个Export暴露的类集合;Export表示一个Bundle向其它Bundle暴露出可被引用的类集合;Require表示一个Bundle引用另一个Bundle所有暴露出来的类集合。只有当一个Bundle解析成功后,其类加载才能够确保正确。Bundle模块层定义了Bundle和设计时依赖相关机制。 


 Bundle运行时依赖是通过可管理服务实现的,即一个Bundle通过服务注册表引用了另一个Bundle注册的服务,这种引用是动态的和可管理的。Bundle通过配置文件或Bundle激活器实现服务注册与卸载,Bundle的生命周期操作管理了服务的状态。Bundle的生命周期层和服务层定义了Bundle运行时依赖的实现。


 OSGi规范在定义了面向服务框架规范的同时,还定义了标准服务规范,比如包管理服务、启动级别服务、日志服务等。

0 0
原创粉丝点击