如果必须将每个捆绑包导入另一个捆绑包,那么每个捆绑包都应该是服务吗?
我已经学习一周了。我研究了OSGi services
,但没有发现需要导入到另一个包中的每个bundle
是否都必须是服务。我是否可以将它们用作简单的JARs
而不是服务
如果是的话,那么在什么情况下我应该做一个捆绑服务
我希望我把问题说清楚
你可以在下面搜索框中键入要查询的问题!
我已经学习一周了。我研究了OSGi services
,但没有发现需要导入到另一个包中的每个bundle
是否都必须是服务。我是否可以将它们用作简单的JARs
而不是服务
如果是的话,那么在什么情况下我应该做一个捆绑服务
我希望我把问题说清楚
# 1 楼答案
服务是捆绑包之间的交汇点。通常,捆绑包依赖于多个服务,并提供0个或更多服务。由于服务只指定合同,所以您只依赖合同。通过这种方式,您可以将实际的依赖项(契约)与这些依赖项的提供者(捆绑包)分开
您会发现,随着时间的推移,您的软件变得更加稳定,因为它不会受到运行时环境中各种变化的影响:重构包、不同的实现、不同的配置。您应该将服务视为体系结构的枢纽
也就是说,你不会被迫使用服务。Bundle可以导入其他Bundle的类,并向其他Bundle提供类
那么什么时候使用服务呢?通常,服务是一种抽象:日志服务、事件管理服务、地理服务等等。你知道它应该为你做什么,但你对细节不感兴趣。一般来说,服务可以以不同的方式实现
如果API和实现合二为一,那么它就不是服务。像ASM(字节码工程)或Guava这样的库不是服务,因为API是实现,两个库都不保持状态