1. 程式人生 > >深入解讀ESB與SOA的關係

深入解讀ESB與SOA的關係

時至今日,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架構中實現服務間智慧化整合與管理的中介。
(本段話引用:IT專家網 http://whatis.ctocio.com.cn/searchwhatis/179/7332679.shtml )