深入解讀ESB與SOA的關係

小弟季義欽發表於2013-08-02

fromhttp://lavasoft.blog.51cto.com/62575/165597

時至今日,SOA的概念漸漸清晰了。
有關ESB的概念,已經吵了好多年了,還是沒有定論。
我個人認為,ESB本來就是抽象的概念,而且內涵豐富,在不同的場合含義不同。因此應該從不同的角度來認識。
一、SOA和ESB一直是沒有明確概念的兩個縮略詞
原因是這兩個詞包含的內涵太豐富了,無法用一兩句話說清楚,並且,這個詞在不同的地方含義也有所不同。
SOA----面向服務架構,實際上強調的是軟體的一種架構,一種支撐軟體執行的相對穩定的結構,表面含義如此,其實SOA是一種通過服務整合來解決系統整合的一種思想。不是具體的技術,本質上是一種策略、思想。
ESB----企業服務匯流排,像一根“聰明”的管道,用來連線各個“愚笨”的節點。為了整合不同系統,不同協議的服務,ESB做了訊息的轉換解釋與路由等工作,讓不同的服務互聯互通。
目前ESB與SOA的確切概念依然沒有。但可以明確的說SOA就是一種服務整合思想,它的不同實現方式可能差別很大,目前SOA最常見的實現方式是SCA和JBI。
二、ESB究竟是什麼
這個問題在個大廠商之間,認識和觀點也存在很大差異。
IBM、Oracle等認為ESB是連線服務的一種模式,但一些開源組織和其他廠商認為ESB是一種產品,並且提供了ESB連線解決方案的實現,這種實現可以認為是中介軟體,也可以認為是元件工具。
對此,我個人的觀點更偏向前者,ESB是一種模式,ESB的實現方式也很多,可以稱之為ESB產品。當然在不同場合ESB的含義也不同,需要鑑別。
三、為什麼ESB總和SOA黏在一塊
通常,這兩個名詞總不分家,談論的話題中“你中有我,我中有你”。
為什麼是這樣的呢?
ESB是SOA嗎?
兩者之間究竟有什麼微妙的關係呢?
帶著疑問,繼續往下看:
首先,ESB不是SOA。SOA的最常見的實現方式方式是SCA和JBI,而SCA的實現需要ESB,相反JBI則不需要ESB,可以參看本人對JBI和SCA分析解讀的文章。
其次,因為IBM和Oracle(收購了BEA和SUN的牛X公司)都推崇SCA模式的SOA,因此SCA實際上已經成為SOA的事實標準,說道SOA,最先想到的就是SCA模式了。
最後,ESB是SCA架構實現不可缺少的一部分,ESB產品脫離了具體的應用外,沒有任何意義。ESB的作用在於實現服務間智慧化整合與管理的中介。通過ESB可以訪問所整合系統的所有已註冊服務。
四、ESB的特點
ESB是一種在鬆散耦合的服務和應用之間標準的整合方式。它可以作用於:
面向服務的架構 - 分散式的應用由可重用的服務組成
面向訊息的架構 - 應用之間通過ESB傳送和接收訊息
事件驅動的架構 - 應用之間非同步地產生和接收訊息
ESB就是在SOA架構中實現服務間智慧化整合與管理的中介。
---------------------
學習一個新事物,認識是最重要的,只有不斷的去學習去認識,才能把握其特點、功能、屬性等等,並在認識的基礎上加以合理利用。任何魚目混珠的認識只能導致偏離原則和標準。

相關文章