用 OSGi 应用程序开发和工作的最佳实践
2010-10-09 08:12:40 来源:WEB开发网示例
一个设计不佳的示例是一个登录实现,使用户可以登录文件系统、通过 JPA 登录数据库,或登录一个消息队列(图 9)。为了使用文件系统 logger,一个应用程序需要加载消息 API、JAP API,等等。因此,应用程序含有 logger 实现类,但并不使用。一个比较好的解决方案是登录接口和各个实现相互分离(图 10)。通过这种方式,应用程序可以选择包含一个它使用的登录 bundle ,而不包括额外实现类和任何进一步实现,这些都出现在登录 bundle 中。
图 9. 一个不良设计系统,其中一个 bundle 提供一个 API 的多个实现
图 10. 一个设计良好的系统,其中一个 API 的每个实现都由一个独立的 bundle 提供
8. 避免拆分包和 Require-Bundle
开发 OSGi bundle 时,一个最佳实践是将一个包的所有类放在一个 bundle 中。将一个包分成多个 bundle 会导致使用 Require-Bundle,从而损害使用这些 bundle 的系统的可扩展和维护程度。
原因如下
模块化系统由松耦合、高聚合模块组成,每个模块执行一个相关的逻辑功能,它们之间的界限有明确的定义。该设计目标将生成易于维护和扩展的系统。OSGi bundle 是包上的模块化。
OSGi 通过每个 bundle 声明其提供松耦合的模块,这在 OSGi 术语中称为 bundle 。这是满足运行时 bundle 提供的包的。一个 bundle 不能直接依存于一个提供相关性的 bundle;至于哪个 bundle 提供相关性由 OSGi 运行时决定,根据部署到框架的 bundle 而定。结果是提供一个特殊包的 bundle 能够被提供相同包的不同 bundle 所取代,而不改变依赖那个包的 bundle。
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››应用程序的配置管理Poco
- ››开发一个自己的HTML在线编辑器(一)
- ››开发一个自己的HTML在线编辑器(二)
- ››开发者在App Store上赚的钱比在Android Market上多...
- ››开发者应深入学习的10个Android开源应用项目
- ››开发移动 Web Ajax 应用
- ››开发者眼中的iPhone与Android
更多精彩
赞助商链接