企業集成有很多種模式,隨著技術的發展,實時的、面向消息的企業集成越來越成為主流,面向消息的企業集成的穩定性和兼容性要求其基礎件,也就是message系統必須提供足夠強壯和可擴展的設計,下面幾種是作為面向消息的企業集成的基礎件所必須提供的幾個關鍵性組件。
消息集成使得message系統負責轉換兩個應用之間的數據格式,從而使得應用可以專注于他們需要共享什么數據而不是如何共享它們。
以下這些組件,在著名的ESB系統Mule中都可以見到,有興趣的同學可以去看看Mule的源代碼,雖然Mule對ESB的實現有很多不成熟的地方,以至于讓我不敢在生產系統中使用(唉...可恨的Mule),但是畢竟是一個大而全的系統,值得借鑒一下。
Channels — Messaging應用通過一個Message Channel傳送數據,一個sender到receiver的虛擬管道。一個新安裝的消息系統默認不包含任何channel;你必須知道你的應用需要怎樣通訊,然后才能建立channel來完成它。
Messages — Message是在channel上傳輸的不可分割的包。因此,為了傳輸數據,應用必須將數據打包成一個或多個packets,將每個packet包裝成一個message,然后將其傳輸到一個channel。同樣的,一個receiver應用在接受到message后必須從message中提取出數據才能使用。Message系統應該能重復的傳輸message,直到它成功為止。
Pipes and Filters — 最簡單的情況下,message系統將一個消息直接從sender計算機傳送到receiver計算機。然而,通常在消息從sender中發出后,receiver接受到之前,有一些動作需要對message執行。舉例來說,message也許需要驗證或者轉換。Pipes and Filters架構使用channel將多個處理步驟連接起來。
Routing — 在一個大型的、擁有許多不同的應用和channel連接的企業應用中,一個message可能需要穿過多個channel才能到達最終目的地。Message的路由如此復雜以至于最初的發送者無法知道那些channel能將message傳送給最終的receiver。因此,最初的發送者將message發送給一個Message Router,一個以Pipes and Filters架構中的filter形式存在的應用組件。Router將決定如何將message發送到最終receiver或者至少是下一個Router。
Transformation — 不同的應用的數據格式可能不同。為了調節sender和receiver之間的數據格式不同的問題,message必須經過一個中介的filter,一個Message Translator,它將message從一個格式轉換成另外一個格式,或轉換成一個公共的格式。
Endpoints — 大多數的應用程序沒有內建的能力來同一個message系統交互。因此他們必須包含一個中間層,它知道應用系統如何工作,也知道message系統如何工作,并橋接兩個系統。這個系統是一組并列的Message Endpoints,它能夠使得應用發送和接受message。
System manager - 作為一個大型的消息集成系統,其面向消息的、異步、低耦合的本質使得系統更加難以調試,運行期的狀態也難以跟蹤,所以,我們必須有強有力的手段進行系統的運行期管理和監控,同時最好能夠在運行進行動態更新,以保障系統的強壯性。
企業應用集成是一個巨大而復雜的系統,作為其基礎件ESB系統,必須能夠提供對其完全的支撐以及足夠強壯的系統,這正是ESB系統建設的難度所在。