幾款開源ESB總線的比較
現有的開源ESB總線中,自從2003年第一個開源總線Mule出現后,現在已經是百花爭鳴的景象了。現在我就對現有的各種開源ESB總線依據性能、可擴展性、資料文檔完整程度以及整合難易程度等方面展開。
CXF
CXF的定位不是ESB總線,而是一個服務框架(Service Framework),主要還是為關于服務的應用提供API上的支持,或者上下文上的管理。
但是它的前身之一的Celtix就是IONA公司捐獻給開源界的ESB總線,所以整體上還是能提供ESB總線的功能(需依靠與其它的容器)。在 CXF中的總線只是起到一個共享資源的提供者的作用。這些貢獻資源就相當于JBI規范中的綁定組件(BC)或服務引擎(SE)。即使如此CXF并沒有提供 了對JBI規范的完整實現。可以說它只是一個類似的JBI容器。
CXF支持與除了HTTP之外的其它協議的通信綁定,例如REST、JSON和CORBA等,所以對于Ajax有較強的兼容性。這相對與其他的ESB總線而言可以說是一個較大的優勢。
但是CXF的ESB總線是依據Spring框架來實現的,由Spring來管理Bus中的各個組件。而Spring對各個Bean或組件的管理是 通過一個上下文的配置文件來實現的。這樣的方式相對與其他的ESB總線(例如依據JMX)的方式而言,則不支持動態的熱部署。也就是說CXF不是一個 JBI容器,它必須依附與其他的容器來運行。現有的資料來看,CXF目前可以部署在JBoss和BEA Weblogic中,Tomcat服務器由于不支持完整的J2EE規范,特別是基于JCA的EJB,所以對CXF支持的程度不理想。雖然資料中沒有涉及到 Geronimo,但是以Geronimo對J2EE規范的兼容程度來看,特別是EAR文檔的支持,在Geronimo中部署CXF應該沒有什么太大的障 礙。
同樣你可以在使用Spring的應用中嵌入CXF,而這只需要在Spring的配置文件中填寫相應的配置信息即可。
關于CXF的文檔較為豐富,這部分是由于它本身是整合了Xfire和Celtix這兩個本身較為成熟的開源項目。另外它較大的依賴于Spring框架,所以如果對Spring較為熟悉的話,在使用上一般就沒有太大的障礙了。
Open ESB
OpenESB是Sun公司提出來的開源ESB項目,所以對JBI規范的支持程度就不用多說了。而GlassFish ESB則是將OpenESB的核心運行環境與GlassFish應用服務器以及NetBean的集成開發環境整合在一起的有一個ESB項目,當然其中還包 含了一些OpenESB中已有的組件(子集)。
在OpenESB中提供了能夠支持WS-BPEL2.0的引擎。但是現在這個組件支持WSDL1.1,暫不支持WSDL2.0。而且這個引擎要依 托與NetBean集成開發平臺,起碼只能得到基于NetBean的相應開發包和組件包。但是這個組件對BPEL提供了強大的支持,其中包括支持端點狀態 的監控、支持多線程執行、業務流程的調試、系統錯誤的可靠性恢復中各個業務流程實例的數據庫持久化以及負載均衡等。
在資料方面只有一個演示視頻,主要還是基于NetBean平臺的使用介紹。其他公布的資料則則較少,特別是API方面幾乎沒有。所以如果要對OpenESB進行按照自身的要求進行擴展則較為困難,除非對OpenESB的源代碼進行全面的分析。
ServiceMix
ServiceMix是Apache基金會下的一個ESB總線,同時也是一個獨立的JBI容器(也就是說它支持完整的JBI規范)。說它是一個獨立的JBI容器,是因為它擁有自己獨立的運行環境,能像應用服務器一樣啟動,并支持動態的熱部署等,這一點則區別于CXF。
ServiceMix的容器運行環境采用內核的架構,并以Geronimo關于J2EE方面的實現為基礎(當然也就支持J2EE的各方面規范,例 如安全性方面的JAAS等),所以在性能上還是較為出色的。在通信上,整合了ActiveMQ,也支持多種的通信協議,例如HTTP和JMS。同時在管理 組件上采用了JMX的管理架構,從而能夠對部署在總線上的各種組件進行動態的配置和管理,或通過Web的形式,或通過JMX遠程訪問均可。 ServiceMix內核能夠整合到所處的操作系統中,從而作為OS的對外提供的服務。區別與其他總線的是,ServiceMix還提供了自己的腳本命令 控制臺,并通過一些簡單命令來管理應用組件以及ServiceMix內核實例。
關于ServiceMix的資料也較為的完備,其中當然也包括一些簡單的小例子。關于組件擴展方面和流程引擎整合方面的詳細資料則不夠詳細。如果 要做進一步的總線上的擴展,則需要對源代碼和例子進行較為深入的學習和研究,當然這一切的基礎是對JBI的規范有較為全面的了解。
JBoss ESB
JBoss ESB是JBoss社區為面向SOA而提出的一個EAI系統平臺。它提供了很多EAI本身所應具有的功能,例如業務流程監控、集成開發環境、工作流用戶接 口、業務流程管理、分布式計算架構以及作為應用容器的功能等。可以說JBossESB在功能上是較為強大的。但相對于上面的總線而言,它的技術架構方案是 最獨立的。因為它除了支持J2EE標準外,對于JBI規范壓根就不沾邊。當然也就不存在JBI規范中的規范化消息路由、服務引擎和綁定組件了。 JBossESB除了支持 Web Service外,還支持多種的遠程調用協議,例如JMS。只是相對于ServiceMix和CXF而言,如果要對JBossESB進行擴展,可能要花費 較大的時間和精力。
JBossESB相對上述的開源項目而言,一個很大的優勢在于文檔資料是最為豐富和完備的。所以在開發和擴展上減小了不小的阻力。它并且依托于成熟的JBoss社區,周圍齊全的開源項目支持,為后期的平臺擴展提供了豐富的選擇空間。
UltraESB
UltraESB 是一個開源的企業服務總線 ESB 項目,特點是高性能和易用。提供一個強大而具備良好伸縮性的架構,在性能方面表現優異,而且輕量級,易于使用和管理。
支持傳輸層:
- HTTP/S
- JMS
- Email (POP3/IMAP/SMTP)
- AMQP
- File/SFTP/FTP/FTPS/Samba
- Timer (Scheduled Job)
- TCP/S
- MLLP/S
支持協議:
- REST
- SOAP
- Hessian
- FastInfoset
- AS2
- Protocol Buffers
特性:
- EIP
- JTA XA / Local Txn's
- WS-Security
- JAXB
- XSLT / XQuery
- JSR 223
- Data Services
- Soring Support
- Binary
- XACML
- AuthN and AuthR
- Caching
- Throttling
http://adroitlogic.org/
MuleESB
Mule是當下使用最多的開源集成平臺。MuleESB價格低廉,配置、擴展簡單,而且靈活性強,使得它非常流行。
http://www.mulesoft.org/
WSO2 ESB(WSO2)
相比其他使用了JBI規范的重量級ESB,WSO2這個新來者帶來了一個輕量級的ESB。這是因為,WSO2 ESB以Web服務標準作為集成的焦點。