ESB(Enterprise Service Bus,即企業(yè)服務總線)是傳統(tǒng)中間件技術與XML、Web服務等技術結合的產(chǎn)物。ESB提供了網(wǎng)絡中最基本的連接中樞,是構筑企業(yè)神經(jīng)系統(tǒng)的必要元素。
企業(yè)服務總線ESB就是一種可以提供可靠的、有保證的消息技術的最新方法。ESB中間件產(chǎn)品利用的是Web服務標準和與公認的可靠消息MOM協(xié)議接口(例如 IBM的WebSphere MQ、Tibco的Rendezvous和Sonic Software的SoniCMQ)。ESB產(chǎn)品的共有特性包括:連接異構的MOM、利用Web服務描述語言接口封裝MOM協(xié)議,以及在MOM傳輸層上傳送簡單對象應用協(xié)議(SOAP)傳輸流的能力。大多數(shù)ESB產(chǎn)品支持在分布式應用之間通過中間層如集成代理實現(xiàn)直接對等溝通。
企業(yè)服務總線(Enterprise Service Bus,ESB)的概念是從面向服務體系架構(Service -Oriented Architecture, SOA)發(fā)展而來的。SOA描述了一種IT基礎設施的應用集成模型,其中的軟構件集是以一種定義清晰的層次化結構相互耦合,其中,一個ESB是一個預先組裝的SOA實現(xiàn),它包含了實現(xiàn)SOA分層目標所必需的基礎功能部件。
一、ESB的出現(xiàn)改變了傳統(tǒng)的軟件架構
ESB 是傳統(tǒng)中間件技術與XML、Web服務等技術相互結合的產(chǎn)物,ESB的出現(xiàn)改變了傳統(tǒng)的軟件架構,可以提供比傳統(tǒng)中間件產(chǎn)品更為廉價的解決方案,同時它還可以消除不同應用之間的技術差異,讓不同的應用服務器協(xié)調運作,實現(xiàn)了不同服務之間的通信與整合。從功能上看,ESB提供了事件驅動和文檔導向的處理模式,以及分布式的運行管理機制,它支持基于內(nèi)容的路由和過濾,具備了復雜數(shù)據(jù)的傳輸能力,并可以提供一系列的標準接口。
二、企業(yè)服務總線(ESB)的用處
ESB 不是萬能的,他不是一個應用程序框架,也不是一個企業(yè)應用的解決方案.它只是一個基于消息的調用企業(yè)服務的通信模塊!你可以把它嵌入到你的應用程序框架中,例如嵌入到spring容器里面,或者嵌入到工作流系統(tǒng)中.它的作用是對企業(yè)里面的SOA服務的調用提供一個框架和簡便的方法.
三、企業(yè)服務總線(ESB)的應用特征
大規(guī)模分布式的企業(yè)應用需要相對簡單而實用的中間件技術來簡化和統(tǒng)一越來越復雜、繁瑣的企業(yè)級信息系統(tǒng)平臺。面向服務體系架構(SOA)是能夠將應用程序的不同功能單元通過服務之間定義良好的接口和契約聯(lián)系起來。SOA使用戶可以不受限制地重復使用軟件、把各種資源互連起來,只要IT人員選用標準接口包裝舊的應用程序、把新的應用程序構建成服務,那么其他應用系統(tǒng)就可以很方便的使用這些功能服務。
支撐SOA的關鍵是其消息傳遞架構-企業(yè)服務總線(ESB)。ESB是傳統(tǒng)中間件技術與XML、Web服務等技術相互結合的產(chǎn)物,用于實現(xiàn)企業(yè)應用不同消息和信息的準確、高效和安全傳遞。ESB的出現(xiàn)改變了傳統(tǒng)的軟件架構,可以提供比傳統(tǒng)中間件產(chǎn)品更為廉價的解決方案,同時它還可以消除不同應用之間的技術差異,讓不同的應用服務協(xié)調運作,實現(xiàn)不同服務之間的通信與整合。ESB在不同領域具有非常廣泛的用途:
電信領域:ESB能夠在全方位支持電信行業(yè)OSS的應用整合概念。是理想的電信級應用軟件承載平臺。
電力領域:ESB能夠在全方位支持電力行業(yè)EMS的數(shù)據(jù)整合概念,是理想的SCADA系統(tǒng)數(shù)據(jù)交換平臺。
金融領域:ESB能夠在全方位支持銀企間業(yè)務處理平臺的流程整合概念,是理想的B2B交易支撐平臺。
電子政務:ESB能夠在全方位支持電子政務應用軟件業(yè)務基礎平臺、信息共享交換平臺、決策分析支撐平臺和政務門戶的平臺化實現(xiàn)。
四、幾種ESB的結構和功能
ESB提供了一種開放的、基于標準的消息機制,通過簡單的標準適配器和接口,來完成粗粒度應用(服務)和其他組件之間的互操作,能夠滿足大型異構企業(yè)環(huán)境的集成需求。它可以在不改變現(xiàn)有基礎結構的情況下讓幾代技術實現(xiàn)互操作。
通過使用ESB,可以在幾乎不更改代碼的情況下,以一種無縫的非侵入方式使企業(yè)已有的系統(tǒng)具有全新的服務接口,并能夠在部署環(huán)境中支持任何標準。更重要的是,充當“緩沖器”的ESB(負責在諸多服務之間轉換業(yè)務邏輯和數(shù)據(jù)格式)與服務邏輯相分離,從而使得不同的應用程序可以同時使用同一服務,用不著在應用程序或者數(shù)據(jù)發(fā)生變化時,改動服務代碼。
1. IBM WebSphere ESB
IBM 提供了三種 ESB 產(chǎn)品:IBM WebSphere ESB、IBM WebSphere Message Broker、IBM WebSphere DataPower Integration Appliance XI50。根據(jù)您的需求選擇 ESB 來增強您的 SOA。WebSphere ESB 是一種基于平臺的 ESB,作為集成的 SOA 平臺,針對 WebSphere 應用服務器進行了優(yōu)化。WebSphere Message Broker 是跨平臺的 ESB,是為異構 IT 環(huán)境中的統(tǒng)一連接和轉換而構建的。WebSphere DataPower Integration Appliance XI50 是一種基于設備的 ESB,是為簡化的部署和更強的安全性而構建的。客戶面臨著從簡單到復雜的各式各樣的 ESB 需求。WebSphere ESB的結構如圖一所示。
圖一 WebSphere ESB
2. Microsoft ESB
微軟通過其應用平臺提供了全面的ESB服務,包括:Windows Server® 2003,.NET Framework, BizTalk® Server 2006 R2. 應用平臺提供了一個基礎架構,基于此可以靈活和安全地重復使用架構和商業(yè)服務,并具有協(xié)調原有的服務整合到新的端到端的業(yè)務流程中的能力。如圖二所示。
圖二 Microsoft ESB
微軟通過一些列的產(chǎn)品Windows Server 2003, the .NET Framework 3.0, and BizTalk Server 2006作為對企業(yè)實現(xiàn)ESB的支撐,Microsoft ESB Guidance是基于BizTalk Server 2006一組應用,它提供以下公用的ESB組件:
l Message routing (消息路由)
l Message validation (消息驗證)
l Message transformation (消息轉換)
l Centralized exception management(集中的異常管理)
l Extensible adapter framework(可擴展的適配器框架)
l Service orchestration(服務的編制支持)
l Business rules engine(業(yè)務規(guī)則引擎)
l Business activity monitoring(業(yè)務活動監(jiān)視)
微軟 ESB 指南提供了架構指導,模式和實踐,以及一套BizTalk Server 和 .NET Framework 組件來簡化基于微軟平臺的大型或小規(guī)模的ESB解決方案的開發(fā)。它還可以幫助開發(fā)人員擴展現(xiàn)有的信息和集成解決方案,包括的一些服務和組件。
3. JBOSS SOA Platform
JBoss Enterprise SOA Platform提供了一個基于標準的平臺,用以集成應用、SOA服務、業(yè)務事件和自動化業(yè)務流程。這一SOA平臺集成了特定版本的JBoss ESB、jBPM、Drools、和已得到驗證的JBoss企業(yè)應用平臺,把它們組織在一起形成一個單一的企業(yè)級發(fā)布。如圖三所示。
圖三 JBOSS SOA Platform
JBoss Enterprise SOA Platform打包了不少流行組件如:
l JBoss ESB
l JBoss jBPM jPDL
l JBoss Rules (Drools)
l JBoss Application Server
l Hibernate
l Hibernate Entity Manager
l Hibernate Annotations
l JBoss Seam
l JBoss Web (嵌入式Tomcat 6.0)
l JBoss Cache
l JGroups
l JBoss Messaging
l JBoss Transactions
l JBoss Web Services (JBossWS)
l JBossXB
l JBoss AOP
l JBoss Remoting
l JBoss Serialization
l JacORB
4. ServiceMix對ESB的實現(xiàn)
ServiceMix是一個建立在JBI (JSR 208)語法規(guī)則和APIs上的開源ESB(Enterprise Service Bus:企業(yè)服務總線)項目。
ServiceMix是基于JBI的ESB。它是開源的基于JBI語義和API的ESB和SOA工具包,以Apache許可證方式發(fā)布。 它是輕量的ESB實現(xiàn),易于作為嵌入式ESB使用;集成了對Spring技術的支持;可以在客戶端或服務器端運行;可以作為獨立的ESB提供者,也可以作為另外ESB的服務組件; 可以在JavaSE或JavaEE服務器中使用;ServiceMix同Apache Geronimo以及JBoss服務器完全集成,并且在Apache Geronimo服務器中可以直接部署JBI組件和服務。
Java Business Integration (JBI,Java業(yè)務集成)技術規(guī)范定義了SOA的服務導向集成的內(nèi)核和組成架構。它對公共訊息路徑架構、服務引擎與捆綁的插件程序接口,以及復合型服務描述機制等都進行了標準化,這樣就將多種服務結合成為一個單一的可執(zhí)行的和可審核的工作單元。 參見圖四。
圖4 JBI和ServiceMix關系圖
JBI并不是一個為開發(fā)者設計的一個接口,更準確的說它是在JBI容器里為集成商提供相互集成的一個體系和一系列的接口。所以人們能集合他們所需要的所有部分,做出一個總體解決。例如在理論你能從BPEL引擎上,EJB容器上或者是數(shù)據(jù)傳輸產(chǎn)品上集合一個基礎設施,并且能夠集成的很合適。
ServiceMix 中包含完整的JBI容器,支持JBI規(guī)范的所有功能要求:
l 規(guī)范化消息服務和路由
l JBI管理Beans (MBeans)
l 組件管理和安裝的Ant任務
l 對JBI部署單元的完全支持,支持JBI組件的熱部署