2013-11-21 56 views
2

對於我的碩士論文,我正在開發銷售大型活動門票的應用程序框架。我的主要要求是可修改性,可擴展性和性能。我的客戶(活動組織者)應該能夠在運行時輕鬆替換組件,並添加功能。這種組件的一個例子可以是座位分配組件。具有可擴展性的基於組件的應用程序:OSGi或Akka?

我的導師說要看OSGi。鬆耦合捆綁的想法當然是有吸引力的。當尋找替代品時,我發現了阿卡。這個框架承諾很多東西,比如可伸縮性和高性能。我想知道阿卡的演員概念是否適合我的可修改性要求。 Akka似乎比OSGi更有效率,所以開發速度會更快。 Akka似乎更適合可擴展性。有了OSGi,我會比較難。

如果您有OSGi和Akka的經驗,那麼您會爲我推薦?兩種技術在比較時有什麼優點和缺點?最後,是否有任何可以替代OSGi或Akka的替代方案來滿足我的要求?

編輯

首先,感謝您的答覆,到目前爲止,你有很大的幫助。如下所述,我試圖比較蘋果和梨。更合乎邏輯的問題是:OSGi和Akka如何一起使用並彼此受益?這是如何組織的?你所有的演員是否都住在一個OSGi包中,他們每個人都得到一個單獨的包,有沒有混合的解決方案,還是沒有真正的「正確」的方法來做到這一點?

EDIT二

我發佈了一個跟進的問題here,詢問如何OSGi和阿卡結合起來。

+1

我想你應該爲此提出一個新問題。 –

+0

我會這樣做的! –

回答

3

正如彼得說,他們不是直接比較。事實上,你可以一起使用它們,它們應該是完全互補的。

Akka提供了一個異步通信API。 OSGi提供了一個模塊化的,面向服務的框架。例如,Akka中沒有任何東西可以解決隔離模塊的問題,從而使他們不能看到彼此的內部組件。同樣,OSGi也不像Akka提供的異步通信。因此,一起使用它們,您將得到兩全其美的效果......

OSGi確實具有同步服務,它們是單個JVM中模塊之間通信的主要方法。 OSGi還有一個遠程服務層,可用於遠程機器之間的通信。我想這可能是OSGi和Akka最直接重疊的地方。但即使在這裏,我認爲還有合作的潛力。例如,OSGi遠程服務具有非常強大的發現機制,可以讓我們在網絡上宣傳功能。您可以使用此發現來查找可供您與之通信的Akka演員。

我不知道有人真的在做這件事,所以我認爲探索和擴展這個想法對於碩士論文來說是一個很好的話題!

你上哪所大學? OSGi聯盟對培養與學術界的聯繫非常感興趣,也許我們可以與您和您的教授建立在線會議?

+0

正如axiopisty提到的,我應該使用OSGi來處理我的可修改性和熱插拔要求,而使用Akka來處理我的可擴展性和性能問題?我不知道如何將OSGi和Akka結合在一起。 我在根特大學。我目前正在研究我的SOTA。我的導師只是說要看看OSGi。由於我對OSGi和Akka等技術沒有經驗,所以我有點困惑,導致了一些不合邏輯的問題。 恐怕會議不可能,我的導師和教授的日程安排很緊。無論如何謝謝你提出,這是你的。 –

+0

好吧,似乎沒有很多人都有Akka和OSGi的經驗......這是什麼使這個很好的研究項目!我建議通過教程等單獨學習每種技術;那麼你會對如何把它們放在一起有個更好的想法。 –

2

我想你比較蘋果和梨。你可以在OSGi上運行Scala代碼(儘管它們的二進制兼容性很糟糕)。

Scala是一種編程語言,Akka是一個消息庫。 OSGi是一個動態組件系統。所以不知道你怎麼能比較他們

+0

我不確定你爲什麼在這裏提到Scala。對於可伸縮性,我的意思是可以輕鬆地從一個節點擴展到例如10個節點的應用程序。 至於OSGi和Akka之間的比較。我知道他們很難比較,這就是爲什麼我在搜索時找不到很多東西,但是我必須在這裏做出決定。在使用OSGi時,我可能不會使用純粹的OSGi,而是像白羊座或春天。其中,包括阿卡,你會推薦? –

+0

顯然Akka有時用在OSGi環境中。 Akka如何以這種方式使用?包是由不同的演員組成的? –

+0

我沒有Akka的經驗......我想你必須閱讀這兩種技術,看看你想使用的每個部分。我的建議:在開始時保持簡單。白羊座和春天都是巨大的框架,而問題似乎非常簡單。 –

2

我同意尼爾和彼得,你要求我們對蘋果和橘子進行比較。您可以將兩個框架一起使用。我目前正在研究一個與您指定的主要需求相同的項目。我正在創建一個演示使用這兩種技術的原型,OSGi提供模塊化和可更新性,Akka提供可擴展性和性能。

If you would like to see both frameworks working together you can play with the sample application I posted on github

+0

那麼,如果我正確地理解了你的項目結構,那麼你只需要開發一個OSGi包就可以了嗎?這也可以分成幾個捆綁包,它的親/用和用例是什麼? –

+0

我應該澄清,這個演示是我第一次嘗試使用OSGi和Akka框架。所以我對他們的經驗是有限的,可能比我做過的事情更好。 我想使用OSGi來提供可更新性和可擴展性,並使用Actors來簡化應用程序的邏輯和線程/併發性的管理。 Akka還允許與遠程應用程序/服務進行簡單集成。 我不會說應用程序的項目結構意味着1個包含所有演員的包。事實上,情況恰恰相反。 – axiopisty

1

他們不是蘋果比較蘋果。它們彼此正交,如果有的話,互補。同時使用。

相關問題