在我们正在开发的应用程序中,我有一个供数据提供程序组件实现的通用接口,并且我将这些提供程序作为服务连接起来。
我的一位同事建议,最好只创建一项可以跟踪这些实现的服务(当前有多少个实现可用,也许可以通过 getters 将它们提供给代码库的其他部分),并且我们可以注册/取消注册它们使用实施包的激活器。
虽然这通常可以工作,但这(几乎)正是服务层首先提供的,对我来说,感觉就像我们在重复功能。
你怎么认为?
您的用例是服务注册表的主要 OSGi 用例之一。服务注册表主要用于此类需要在非耦合模块之间共享实例的应用程序。
使用服务注册表您可以获得:
- 声明式服务或蓝图等工具允许您不耦合到 OSGi API
- Eventing
- 内省
- 并发性
- 任何模块都可以为池做出贡献,而无需更改中央配置
- 通过强大的过滤器进行选择(运行时可通过 DS 进行配置)
- 现有 shell 的可调试性
- 标准化
OSGi 的主要目的始终是为其他人提供服务以供使用的独立模块,例如黑板编程模型。这提供了一个非常优雅的点对点解耦编程模型。整个类加载之战始终掩盖了这一方面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)