至今日,SOA的概念漸漸清晰了。架構
有關ESB的概念,已經吵了好多年了,仍是沒有定論。異步
我我的認爲,ESB原本就是抽象的概念,並且內涵豐富,在不一樣的場合含義不一樣。所以應該從不一樣的角度來認識。分佈式
1、SOA和ESB一直是沒有明確概念的兩個縮略詞工具
緣由是這兩個詞包含的內涵太豐富了,沒法用一兩句話說清楚,而且,這個詞在不一樣的地方含義也有所不一樣。中間件
SOA----面向服務架構,實際上強調的是軟件的一種架構,一種支撐軟件運行的相對穩定的結構,表面含義如此,其實SOA是一種經過服務整合來解決系統集成的一種思想。不是具體的技術,本質上是一種策略、思想。事件
ESB----企業服務總線,像一根「聰明」的管道,用來鏈接各個「愚笨」的節點。爲了集成不一樣系統,不一樣協議的服務,ESB作了消息的轉換解釋與路由等工做,讓不一樣的服務互聯互通。路由
目前ESB與SOA的確切概念依然沒有。但能夠明確的說SOA就是一種服務集成思想,它的不一樣實現方式可能差異很大,目前SOA最多見的實現方式是SCA和JBI。產品
2、ESB到底是什麼軟件
這個問題在個大廠商之間,認識和觀點也存在很大差別。技術
IBM、Oracle等認爲ESB是鏈接服務的一種模式,但一些開源組織和其餘廠商認爲ESB是一種產品,而且提供了ESB鏈接解決方案的實現,這種實現能夠認爲是中間件,也能夠認爲是組件工具。
對此,我我的的觀點更偏向前者,ESB是一種模式,ESB的實現方式也不少,能夠稱之爲ESB產品。固然在不一樣場合ESB的含義也不一樣,須要鑑別。
3、爲何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能夠訪問所集成系統的全部已註冊服務。
4、ESB的特色
ESB是一種在鬆散耦合的服務和應用之間標準的集成方式。它能夠做用於:
面向服務的架構 - 分佈式的應用由可重用的服務組成
面向消息的架構 - 應用之間經過ESB發送和接受消息
事件驅動的架構 - 應用之間異步地產生和接收消息
ESB就是在SOA架構中實現服務間智能化集成與管理的中介。