分布式基础架构中的OSGi

时间:2012-05-02 17:22:03

标签: osgi distributed dosgi

我们正在开发基于OSGi的基础架构,用于处理基于流的数据流。具体的处理任务由各个OSGi组件执行。我们现在需要在不同的机器上分发这些组件的可能性,这意味着我们需要OSGi组件/容器之间的某种通信机制。

在我的研究期间,我遇到了不同的潜在解决方案:R-OSGi,用于分布式OSGi的Apache CXF,Eclipse通信框架。

ECF似乎特别有趣,因为它支持不同的传输格式,并为服务发现等内容提供支持。

我的核心问题:

  • 在Felix中设置ECF基础设施是否有详细的教程/演练? (根据我的研究,我发现,最近添加了Felix支持)
  • 除了上面列出的三个我可能错过的解决方案之外还有其他解决方案吗?
  • 是否有理由采用Apache CXF而不是ECF?

1 个答案:

答案 0 :(得分:2)

第一个问题 - 是否有与Felix建立ECF的详细演练 - 我不知道答案,尽管可能会使用搜索引擎来找出这些术语的组合。

问题是ECF使用Equinox基础架构,并且有时无意中依赖于通过传递依赖性而非公开的包(特别是使用Equinox进行非公共调试的Runtime API)。反过来,这意味着ECF依赖于许多其他组件可用,而这个集合通常在Felix运行时没有很好地定义。

您错过了Paremus的Service Fabric,这是一个商业OSGi云解决方案。我不确定你是否专注于开源或不关注;但如果您要包含商业许可证,那么他们就拥有了非常强大的远程服务架构。

最后,Apache CXF超过ECF问题 - 如果您使用的是Felix,我认为使用Apache CXF可能比使用ECF更容易。这主要是由于依赖集和使其工作,结合ECF可能未在Felix上进行测试的事实,因此可能假设Equinox运行时的特定方面(例如,包括运行时的父类加载器委托)引导类路径上的东西)。这不是ECF本身的错误,而是Eclipse生态系统如何运作的人工制品。

如果您想与非OSGi运行时进行通信,那么Apache CXF的优势在于它们可以生成WDSL以与其他语言进行交互。我相信你可以在ECF做同样的工作。 CXF解决方案可能比相应的ECF解决方案(WSDL始终如此)更冗长,但如果您没有使用大量请求,则不太可能产生显着差异。