Nei*_*ett 57
"组件"的定义不如服务.
服务是在OSGi服务注册表中注册的任何对象,可以使用其接口名称进行查找.唯一的先决条件是服务应该实现一些接口......任何接口.例如,我可以在java.lang.Runnable接口下注册一个可运行的对象,客户端可以使用该接口名称查找它.
"组件"往往是一个对象,其生命周期通常由声明服务(DS),蓝图或iPOJO等组件框架进行管理.有关可用的不同组件框架的讨论,请参阅OSGi社区Wiki上的此页面.
组件可以具有以下任何特征,组合或单独使用:
通常,使用组件框架是使用OSGi服务的最简单方法,因为该框架将管理对您要使用的服务的绑定.例如,您可以说您的组件"依赖于"特定服务,在这种情况下,只有在该服务可用时才会创建和激活组件 - 并且当服务变得不可用时它也将被销毁.
编辑:请参阅Neil Bartlett的回答,我已经非常具体地回答了声明服务,但它比我在这里错误地陈述的更加微妙.
简而言之:组件是服务的消费者而不是提供者,服务是组件registring作为服务提供者的扩展.
组件具有生命周期(de/activate和modify),服务依赖关系管理(un/bind).
服务是组件的扩展; 通过服务注册表,它通过发布已实现的接口和属性为其他捆绑包提供服务.
服务的用例很明显,使用组件的典型情况是需要管理生命周期,配置或服务依赖性,但不需要/想要发布组件以进行跨包使用.
| 归档时间: |
|
| 查看次数: |
25796 次 |
| 最近记录: |