2012-05-02 216 views
5

我們正在研究基於OSGi的基礎架構來處理基於數據流的數據流。具體的處理任務由各個OSGi組件執行。我們現在需要將這些組件分佈到不同的機器上,這意味着我們需要OSGi組件/容器之間的某種通信機制。分佈式基礎架構中的OSGi

在我的研究中,我遇到了不同的潛在解決方案:R-OSGi,用於分佈式OSGi的Apache CXF,Eclipse通信框架。

ECF似乎特別有趣,因爲它支持不同的傳輸格式,並提供對服務發現等內容的支持。

我的核心問題:

  • 是否有詳細的教程/穿行設立內菲利克斯的ECF基礎設施? (從我的研究中,我發現最近添加了Felix支持)
  • 除了上面列出的三種方法之外,我可能會錯過哪些解決方案?
  • 是否有理由使用Apache CXF而不是ECF?

回答

2

第一個問題 - 是否有與Felix一起設置ECF的詳細步驟 - 我不知道答案,儘管可能使用搜索引擎找出這些術語的組合。

問題是ECF使用Equinox基礎結構,並且有時通過傳遞依賴性(特別是使用Equinox進行非公開調試的Runtime API)非有依賴的包。這反過來又意味着ECF依賴於大量的其他組件,並且這個組件在Felix運行時通常沒有很好的定義。

您錯過了Paremus服務結構,這是一個商業OSGi雲解決方案。我不確定你是否專注於開放源代碼,但如果你包含商業許可證,那麼他們有一個非常強大的遠程服務架構。

最後,關於ECF問題的Apache CXF問題 - 如果您使用的是Felix,我認爲使用Apache CXF可能比使用ECF更容易。這主要是由於設置了依賴關係並使其工作,並且結合ECF不能在Felix上測試的事實,因此可能會假設Equinox運行時的特定方面(例如,它包括運行時的父類加載器代理來拾取引導類路徑中的東西)。這不是ECF本身的錯,而是Eclipse生態系統如何工作的一個假象。

如果您想要與非OSGi運行時進行通信,那麼Apache CXF的優勢在於它們可以生成WDSL以與其他語言進行交互。我相信你可以在ECF做同樣的事情,做更多的工作。 CXF解決方案可能比相應的ECF解決方案更冗長(WSDL總是),但如果您沒有使用大量請求,這不太可能產生重大差異。