2012-06-23 39 views
7

在閱讀了Service Oriented Architecture Principles網站和各自的維基百科article之後,我有一個想法:Erlang/OTP平臺可以被視爲一個SOA平臺,並且可以在其上構建SOA應用程序。SOA:爲什麼不將Erlang/OTP Web服務器用作服務?

的唯一的事情是,Service Contract在這樣的系統中的每個服務是非常具體:爲了調用在二郎山/ OTP服務的編排層將不得不作出通過二郎消息調用或調用gen_server(取決於實施)。

這不會讓任何對Erlang/OTP平臺範圍以外的服務進行調用。

但是如果我們試圖通過將所有相應的服務功能移動到像Mochiweb這樣基於Erlang的網絡服務器並從根本上改變每個服務從gen_server:call到XML的接口來構建每個服務呢?

這將允許從基於WSDL的通用服務合同的標準化「磚塊」組成各種應用程序。

此外,這種方法將讓我們繼續使用OTP管理程序和其他OTP功能,因爲這樣的服務仍然是OTP應用程序。

因此,問題是: 您是否認爲使用OTP Web服務器(Mochiweb)作爲服務來構建面向服務架構方法的軟件應用程序是一個好主意?額外的XML處理層能否破壞這種方法的所有優點?

SOA with Erlang/OTP

+1

webmachine(http://wiki.basho.com/Webmachine.html)可能值得一看你的非OTP特定環境。原則上,OTP沒有理由不能提供您想要的內容 - 至少在您描述的一般性水平上。 – sfinnie

+0

我一直在想同樣的事情:-) –

+0

sfinnie,在這種特殊情況下,Webmachine和Mochiweb有什麼區別? – skanatek

回答

4

主要的原因不這樣做,是因爲你將自己限制SOA的協議。 Erlang用一些附加點(監視器)實現了IP協議。雖然你可以做到,但我想知道它是否值得。

原則,二郎神已經全部用於想法SOA的但沒有SOAPWSDL的所有膨脹模具 :)

+0

您能否提供一個SOAP和WSDL膨脹的簡單例子? (我在問,因爲我對這個膨脹沒有任何認識) – skanatek

+0

本案中的膨脹意味着「非常大的標準」。很難完全按照規範實施大型標準。 –

2

SOA可以應用於多種實現技術,而不僅僅是SOAPy Web Services,我發現它總是有益的。例如,您可以將數據庫視圖和存儲過程建模爲服務。你可以建模你的Java API是服務。等

現在,讓你的實際問題:

所以,問題是:你認爲通過使用OTP Web服務器(受Mochiweb)的建設與面向服務的架構方式的軟件應用程序 服務是一個好主意?

不是。每個人都從SOAP轉向REST;然而,使用OTP網絡服務器(Mochiweb)作爲RESTful服務構建面向服務體系結構方法的軟件應用程序可能是個好主意。

附加的XML處理層能否破壞這種方法的所有優點?

這取決於你的目標是什麼。如果您只是添加了一個XML層,因爲您認爲這是「正確的事情」,那麼您將始終遇到XML層的問題,因爲它將是一個尋求解決問題的解決方案。如果你的目標是解耦從客戶端實現的服務器實現技術,通過建立普遍表示理解爲你的實體,那麼附加的XML(或JSON或什麼是最適合的)處理層是值得的。

4

這是我們的Erlang的主要應用:網絡服務。我們通常使用Yaws Appmodsarticle here可以告訴你如何完成它。二郎一直是SOA一個很好的平臺,因爲以下的原因:

1.無副作用的代碼是非常easilly編寫和測試。
2.隔離:在Erlang中的進程幫助以一種乾淨的方式隔離每個服務請求。
3.大多數二郎庫像mochiwebmisultinChicago Boss已經從地面行動內置,支持用Erlang編寫的SOA系統。

它是一個偉大的想法,申請背後這些框架中的任何一個你自己的OTP應用。 erlang適合SOA的另一個重要原因是冗餘。 SOA系統需要啓動。如果一個服務請求失敗了,它會沿着一條不同的路徑重新嘗試(當然,在物理層,它由您分發OTP應用程序的另一臺機器來處理)。

給它一個鏡頭,好主意