-1

我对 OSGI 概念有一些愚蠢的怀疑,但需要澄清它们才能更好地理解概念。谁能告诉我 OSGI 服务和组件之间有什么区别。我所知道的是,Service 就像 java 中的一个接口文件,可以由不同的服务或组件使用。而组件就像服务的特定实现。

如果我错了,请让我知道,或者建议一些链接,我可以从中得到很好的东西。

4

2 回答 2

3

OSGi 核心规范定义了服务模型,它是 OSGi 概念的关键部分。服务是实现声明类型(通常是接口)的对象(实例)。OSGi 框架提供了服务层,它是服务提供者和服务消费者之间的代理。

DS 引入了服务组件的概念,它们是捆绑中的类,由 DS 运行时 (SCR) 管理。组件由 SCR 读取的包中的 XML 描述。这些组件一旦被实例化并且如果被声明为服务,就可以被 SCR 注册为服务。

所以组件可以是服务(但它们不一定是)并且它们可以使用服务。

于 2013-03-22T16:22:22.693 回答
1

OSGi 发展了服务的概念,因此包可以减少它们与其他包的耦合 - 即。实现松耦合。“最松散”的耦合来自使用动态服务,其中产生服务的捆绑包在消费者注册以使用这些服务时动态启动。动态服务模型与 OSGi 一起经历了几次演变,包括服务注册和事件侦听、服务跟踪器,最后是声明式服务。

除了最后一个(声明式服务)之外,服务注册代码都放在捆绑包的激活器中。使用声明式服务,公开服务的包称为组件,它在框架理解的 component.xml 文件中声明 - 不需要激活器。在 Eclipse IDE 中,您可以通过右键单击包并添加“组件定义”来使用声明式服务。有一本关于该主题的非常好的书,它通过教程带您了解该技术:

OSGi 和 Equinox

于 2013-03-22T13:44:22.630 回答