在OSGi中,组件(Components)与服务(Services)之间的主要区别是什么? 据我所知,所有的服务必须是组件,但不是所有的组件都必须是服务。
在示例用例中,使用其中一个相较于另一个有什么好处?
在OSGi中,组件(Components)与服务(Services)之间的主要区别是什么? 据我所知,所有的服务必须是组件,但不是所有的组件都必须是服务。
在示例用例中,使用其中一个相较于另一个有什么好处?
编辑: 参见Neil Bartlett的答案,我针对声明式服务进行了相当具体的回答,但比我在此错误陈述的更为微妙。
简而言之:组件是服务的消费者而非提供者,服务是作为服务提供者注册的组件的扩展。
组件有一个生命周期(de/activate和modify),服务依赖管理(un/bind)。
服务是组件的扩展;通过服务注册表,它通过发布实现的接口和属性向其他捆绑包等提供其服务。
使用服务的用例很明显,使用组件的典型情况是需要管理生命周期、配置或服务依赖关系,但不需要/不想将组件发布到捆绑包内部以供使用。
BundleActivator
中实例化并使用registerService
注册来创建服务的老式方法”。我对OSGi还很陌生,这是我所知道的唯一创建服务的方式。那么新的方式是什么? - axiopisty