下一节:OSGi技术
From Tuscany中文社区
目录 |
[编辑] OSGi 架构
- 可以在一个JVM上运行更多的应用
- 改进了JVM的类加载,有利于版本控制
- 在每个应用之间提供安全保护
- 有助于不同的应用间通讯和协同
- 提供生命周期管理 (install, start, stop, update, 等).
[编辑] OSGi 是一个SOA的平台
- 分离契约(接口)与实现
- 可以在不同的实现之间切换
- 动态发现及动态绑定
- 基于契约(接口)的绑定
- 组件重用
- 组件之间的依赖保持在接口之间,而与具体实现代码相对松散
[编辑] OSGi 是一个分层体系
- Execution Environment为应用提供上下文
- Module层提供class loading及打包规范
- Services层提供协作模型
- Security层存在于每个层
[编辑] OSGi Execution Environment层
- 提供来自JVM运行时的类库
- java.* classes
- 其它关联
- OSGi APIs 仅仅使用Sun的 J2SE子集和 J2ME CDC/CLDC
- OSGi最小运行环境兼容各种Java profiles
- 实现部分可以使用更多的环境
- Security不是必须的
- 如果class loader符合设备条件,则可以启用CLDC
[编辑] OSGi Module层
- 以bundle为应用的打包单位
Java本身没有一个明确的发布模型
- 模块化的Class Loading
Java的 Class Path是一个顺序查找的结构,从而难以在多个应用之间控制
- 保护
Java本身并不能保护一个包的不被其它包引用
- 版本
Java本身不能保真一个包的多个版本共存
[编辑] OSGi Life Cycle层
- System Bundle 代表了OSGi Framework
- 提供了用于管理bundle的API
Install
Resolve
Start
Stop
Refresh
Update
Uninstall
[编辑] OSGi Service层
- 提供一个VM内部的服务化模型
- 根据服务的类型发现服务(得到通知),不需要协议
- 服务绑定通过
- 程序控制,
- 缺省规则
- 发布配置
- OSGi Alliance提供了很多标准化的服务
[编辑] OSGi Service层的演进
[编辑] Security层
- 是目前最安全的运行环境之一
- 是动态的,与java不同
- 完全可控
- 基于Java 2 security
- 许可
- Bundle签名
- 其它的一些规则,进一步提升安全性
[编辑] OSGi实现
- 主流Framework提供商有
- ProSyst,
- Gatespace Telematics, and
- IBM
- Siemens
- Espial
- 开源项目
- Apache Felix
- Eclipse Equinox
- Gatespace Knopflerfish
[编辑] OSGi的好处
- 组件的生产更简易
- 组件之间的耦合度更小
- 协作模型
提高重用度
- 广泛接受
更大的市场
- 适合多样化设备

