用 OSGi 应用程序开发和工作的最佳实践
2010-10-09 08:12:40 来源:WEB开发网核心提示: 构建 OSGi bundle,一个最佳实践是将任何 API 类从实现类放入单独的 bundle,用 OSGi 应用程序开发和工作的最佳实践(7),原因如下从实现类分离 API 类比较灵活,一个单独的 API bundle 使一个客户端可以使用任何实现提供商;此外,提供商 bundle 已经分离了
构建 OSGi bundle,一个最佳实践是将任何 API 类从实现类放入单独的 bundle。
原因如下
从实现类分离 API 类比较灵活。一个单独的 API bundle 使一个客户端可以使用任何实现提供商;此外,也可使多个提供商同时使用。如果没有这个分离,客户端 bundle 需要重启来连接一个新提供程序 bundle。
该最佳实践也可以减少 API bundle 包依赖性,因而减少不同 API 之间的循环依赖性。当两个 API 实现内部彼此使用 API 时,这很容易发生。
一旦 API 类放入一个独立的 bundle,确保没有实现包被导出是很重要的,API 实现是使用公共 API 作为 OSGi 服务发布的。
示例
图 6 中的场景展示了一个客户端 bundle,从一个没有分离这些包的提供商 bundle 导入 API 类和实现类,这个提供商 bundle 也导出实现类和 API 类。这是一个糟糕的实践,因为没有分离,也因为实现类被导出且不能作为服务公开。
图6. 设计糟糕的提供商 bundle ,其中 API 类和实现类是在同一 bundle 中
另一个场景如图 7 所示,其中显示了一个客户端,从一个 bundle 中导入 API 包,从另一个中导入实现包。尽管 API 包和实现包已被分离,提供商仍然导出实现包,而不是作为服务公开该类。
图 7. 设计糟糕的提供商 bundle,其中 API 类和实现类已被分离
最后一个场景如图 8 所示,显示了最佳实践。提供商 bundle 已经分离了实现包和 API 包,此外,实现类也被作为 OSGi 服务公开。
[]
更多精彩
赞助商链接