首页 文章

组件提供服务

提问于
浏览
0

我对OSGI中的术语组件和服务有一个疑问 . 我正在使用apache felix框架 . 我已在此链接http://wiki.osgi.org/wiki/Declarative_Services#Providing_Services中读到组件提供服务 . 但是,当组件提供服务而不是接口时,我没有得到它?在我看来,接口是一个由组件实现的服务 .

还有一个疑问是,如果另一个捆绑包想要使用另一个捆绑包的服务而不是如何使用它?它使用接口(服务)或组件(实现类) .

请清除我的疑虑,以便我能更好地了解两个术语的服务和组件以及与scr表示法的关系 .

1 回答

  • 1

    你是对的,事情的名称有时有些不清楚,在Felix和Equinox之间命名也有一些细微差别 .

    在声明服务中:

    OSGi中的服务是注册到服务注册表的对象 . 它可以是一个组件,但它可以是您喜欢的任何对象 .

    组件是对象的具体实例,由声明性服务容器管理 . 您需要提供一个实现类,容器可以使用它来实例化该类 .

    有时这就是您所需要的:如果存在所有引用,则将实例化此对象,并在适用时调用激活/取消激活方法 .

    如果您还想将其注册为OSGi服务,以便其他组件可以使用它,您需要:

    • 实现您要提供的服务的接口

    • 表示您要将其注册为具有该接口的服务

    如果你真的想要,你可以将实现类注册为提供的服务,但使用接口是更好的分离 .

    要在组件中使用其他服务,您需要引用它 . 在OSGi维基上,你提到该部分似乎缺失了 . 这个blog解释得很好 .

    问候,弗兰克

相关问题