我对 OSGI 概念有一些愚蠢的怀疑,但需要澄清它们才能更好地理解概念。谁能告诉我 OSGI 服务和组件之间有什么区别。我所知道的是,Service 就像 java 中的一个接口文件,可以由不同的服务或组件使用。而组件就像服务的特定实现。
如果我错了,请让我知道,或者建议一些链接,我可以从中得到很好的东西。
我对 OSGI 概念有一些愚蠢的怀疑,但需要澄清它们才能更好地理解概念。谁能告诉我 OSGI 服务和组件之间有什么区别。我所知道的是,Service 就像 java 中的一个接口文件,可以由不同的服务或组件使用。而组件就像服务的特定实现。
如果我错了,请让我知道,或者建议一些链接,我可以从中得到很好的东西。
OSGi 核心规范定义了服务模型,它是 OSGi 概念的关键部分。服务是实现声明类型(通常是接口)的对象(实例)。OSGi 框架提供了服务层,它是服务提供者和服务消费者之间的代理。
DS 引入了服务组件的概念,它们是捆绑中的类,由 DS 运行时 (SCR) 管理。组件由 SCR 读取的包中的 XML 描述。这些组件一旦被实例化并且如果被声明为服务,就可以被 SCR 注册为服务。
所以组件可以是服务(但它们不一定是)并且它们可以使用服务。
OSGi 发展了服务的概念,因此包可以减少它们与其他包的耦合 - 即。实现松耦合。“最松散”的耦合来自使用动态服务,其中产生服务的捆绑包在消费者注册以使用这些服务时动态启动。动态服务模型与 OSGi 一起经历了几次演变,包括服务注册和事件侦听、服务跟踪器,最后是声明式服务。
除了最后一个(声明式服务)之外,服务注册代码都放在捆绑包的激活器中。使用声明式服务,公开服务的包称为组件,它在框架理解的 component.xml 文件中声明 - 不需要激活器。在 Eclipse IDE 中,您可以通过右键单击包并添加“组件定义”来使用声明式服务。有一本关于该主题的非常好的书,它通过教程带您了解该技术: