2012-05-02 18 views
5

私たちは、ストリームベースのデータフローを処理するためのOSGiベースのインフラストラクチャに取り組んでいます。特定の処理タスクは、個々のOSGiコンポーネントによって実行されます。これらのコンポーネントを別々のマシンに配布する必要があります。つまり、OSGiコンポーネント/コンテナ間で何らかの種類の通信メカニズムが必要です。分散インフラストラクチャのOSGi

私の研究では、R-OSGi、Distributed OSGi用のApache CXF、Eclipse Communication Frameworkという異なる潜在的なソリューションに遭遇しました。

ECFは、さまざまなトランスポートフォーマットをサポートし、サービスディスカバリなどのサポートを提供するため、特に興味深いようです。

マイ中央質問:

  • はフェリックス内のECFインフラストラクチャを設定するための任意の詳細なチュートリアル/ウォークスルーがありますか? (私の研究から、私は最近、Felixのサポートが追加されていることがわかりました)
  • 上記の3つの解決策はありますか?
  • ECFの代わりにApache CXFを使用する理由はありますか?

答えて

2

最初の質問 - FelixでECFを設定するための詳細なウォークスルーがあるかどうか - 答えはわかりませんが、検索エンジンを使ってこれらの用語の組み合わせを見つけることができます。

ECFはEquinoxインフラストラクチャを使用しています。過渡的な依存関係(特に、非公開のデバッグにEquinoxを使用するランタイムAPI)によって非公開のパッケージに偶然依存しています。これは、ECFが利用可能な他のコンポーネントのホスト全体に依存していることを意味します。このセットは、通常、Felixランタイムではよく定義されていません。

あなたは商用OSGiクラウドソリューションであるParemusのサービスファブリックを見逃しています。オープンソースに焦点を絞っているかどうかはわかりません。商用ライセンスを含める場合は、リモートサービス用の非常に堅牢なアーキテクチャを採用しています。

最後に、ECFに関するApache CXFの質問 - もしあなたがFelixを使っているなら、おそらくECFを使うよりもApache CXFを使う方が簡単だと主張したいと思います。これは主に、依存関係が設定され、動作していることと、ECFがFelix上でテストされない可能性があり、Equinoxランタイムの特定の側面(たとえば、実行時の親クラスローダーの委任が含まれますブートクラスパス上のもの)。これは実際にECF自体の欠陥ではなく、むしろEclipseエコシステムがどのように機能するかの人為的なものです。

OSGi以外のランタイムと通信する場合、Apache CXFには他の言語との対話用のWDSLを生成できるという利点があります。私はあなたがもう少し仕事をしてECFで同じことをすることができると信じています。 CXFソリューションは、対応するECFよりも冗長になる可能性が高いですが(WSDLは常にそうです)、大量のリクエストを使用していない場合、これは大きな違いはありません。