【问题标题】:Declarative Vs Bluprint Services in OSGiOSGi 中的声明式与蓝图服务
【发布时间】:2010-12-31 01:33:15
【问题描述】:

OSGi 中的声明式服务和蓝图服务有什么区别?因为两者都是为了在 osgi 中实现依赖注入。 蓝图服务是声明式服务的替代品吗? 还是蓝图服务填补了声明式服务的限制(如果有)?

【问题讨论】:

标签: java dependency-injection osgi


【解决方案1】:

恐怕这个问题没有简单的答案。我建议阅读两者的规范以了解差异的程度。声明式服务是服务纲要的第 112 节,蓝图容器是同一文档的第 121 节。您可以在此处获取核心和概要文件: http://www.osgi.org/Download/Release4V42

但对我来说,最显着的区别是(在 DS 术语中)蓝图服务可以在没有它所依赖的服务存在的情况下激活。容器创建代理服务,这些服务会阻塞直到实际实现可用。我相信这类似于 Spring 的方法,习惯使用 Spring 的 IOC/DI 方法的人会立即获得 Blueprint,尽管我无法从从未使用过 Spring 或 Blueprint 的个人经验发表评论。

由于我们处理的是 OSGi 服务,因此可以按照您认为合适的方式混合和匹配 DS 和蓝图。到目前为止,我还没有发现需要做任何比 DS 更复杂的事情,所以我不确定 Blueprint Container 规范满足什么用例,尽管从规范看来,Blueprint 提供了相当多的功能为了使组件开发变得简单。

我相信添加它主要是因为 J2EE 开发人员会觉得它很熟悉,但这只是我的看法。 :)

【讨论】:

    【解决方案2】:

    我意识到这是一个老话题,但我认为这个问题仍然很重要。

    我同意其他人的观点,即 BS 比 DS 更好地隐藏了 OSGi 的动态特性。 此外,DS 似乎是用于在 包之间进行绑定,而 BS 可用于构建“供内部使用”的对象图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-20
      • 2012-04-27
      • 1970-01-01
      • 2016-08-05
      • 2011-05-01
      • 2013-10-09
      • 1970-01-01
      • 2011-09-03
      相关资源
      最近更新 更多