現有一些開源ESB總線的比較

現有的開源ESB總線中,自從2003年第一個開源總線Mule出現后,如今已經是百花爭鳴的景象了。如今我就對現有的各種開源ESB總線根據性能、可擴展性、資料文檔完整程度以及整合難易程度等方面展開。

一.CXF

CXF的定位不是ESB總線,而是一個服務框架(Service Framework),主要還是為關于服務的應用提供API上的支持,或者上下文上的管理。

可是它的前身之中的一個的Celtix就是IONA公司捐獻給開源界的ESB總線,所以總體上還是能提供ESB總線的功能(需依靠與其他的容器)。在CXF中的總線僅僅是起到一個共享資源的提供者的作用。這些貢獻資源就相當于JBI規范中的綁定組件(BC)或服務引擎(SE)。即使如此CXF并沒有提供了對JBI規范的完整實現。能夠說它僅僅是一個相似的JBI容器。

CXF支持與除了HTTP之外的其他協議的通信綁定,比如RESTJSONCORBA等,所以對于Ajax有較強的兼容性。這相對與其他的ESB總線而言能夠說是一個較大的優勢。

可是CXFESB總線是根據Spring框架來實現的,由Spring來管理Bus中的各個組件。而Spring對各個Bean或組件的管理是通過一個上下文的配置文件來實現的。這種方式相對與其它的ESB總線(比如根據JMX)的方式而言,則不支持動態的熱部署。也就是說CXF不是一個JBI容器,它必須依附與其它的容器來執行。現有的資料來看,CXF眼下能夠部署在JBossBEA Weblogic中,Tomcatserver因為不支持完整的J2EE規范,特別是基于JCAEJB,所以對CXF支持的程度不理想。盡管資料中沒有涉及到Geronimo,可是以GeronimoJ2EE規范的兼容程度來看,特別是EAR文檔的支持,在Geronimo中部署CXF應該沒有什么太大的障礙。

相同你能夠在使用Spring的應用中嵌入CXF,而這僅僅須要在Spring的配置文件里填寫對應的配置信息就可以。

關于CXF的文檔較為豐富,這部分是因為它本身是整合了XfireCeltix這兩個本身較為成熟的開源項目。另外它較大的依賴于Spring框架,所以假設對Spring較為熟悉的話,在使用上一般就沒有太大的障礙了。

二.Open ESB

OpenESBSun公司提出來的開源ESB項目,所以對JBI規范的支持程度就不用多說了。而GlassFish ESB則是將OpenESB的核心執行環境與GlassFish應用server以及NetBean的集成開發環境整合在一起的有一個ESB項目,當然當中還包括了一些OpenESB中已有的組件(子集)。

OpenESB中提供了可以支持WS-BPEL2.0的引擎。可是如今這個組件支持WSDL1.1,暫不支持WSDL2.0。并且這個引擎要依托與NetBean集成開發平臺,起碼僅僅能得到基于NetBean的對應開發包和組件包。可是這個組件對BPEL提供了強大的支持,當中包含支持端點狀態的監控、支持多線程運行、業務流程的調試、系統錯誤的可靠性恢復中各個業務流程實例的數據庫持久化以及負載均衡等。

在資料方面僅僅有一個演示視頻,主要還是基于NetBean平臺的使用介紹。其它發布的資料則則較少,特別是API方面差點兒沒有。所以假設要對OpenESB進行依照自身的要求進行擴展則較為困難,除非對OpenESB的源碼進行全面的分析。

三.ServiceMix

ServiceMixApache基金會下的一個ESB總線,同一時候也是一個獨立的JBI容器(也就是說它支持完整的JBI規范)。說它是一個獨立的JBI容器,是由于它擁有自己獨立的執行環境,能像應用server一樣啟動,并支持動態的熱部署等,這一點則差別于CXF

ServiceMix的容器執行環境採用內核的架構,并以Geronimo關于J2EE方面的實現為基礎(當然也就支持J2EE的各方面規范,比如安全性方面的JAAS等),所以在性能上還是較為出色的。在通信上,整合了ActiveMQ,也支持多種的通信協議,比如HTTPJMS。同一時候在管理組件上採用了JMX的管理架構,從而可以對部署在總線上的各種組件進行動態的配置和管理,或通過Web的形式,或通過JMX遠程訪問均可。ServiceMix內核可以整合到所處的操作系統中,從而作為OS的對外提供的服務。差別與其它總線的是,ServiceMix還提供了自己的腳本命令控制臺,并通過一些簡單命令來管理應用組件以及ServiceMix內核實例。

關于ServiceMix的資料也較為的完備,當中當然也包含一些簡單的小樣例。關于組件擴展方面和流程引擎整合方面的具體資料則不夠具體。假設要做進一步的總線上的擴展,則須要對源碼和樣例進行較為深入的學習和研究,當然這一切的基礎是對JBI的規范有較為全面的了解。

四.JBoss ESB

JBoss ESBJBoss社區為面向SOA而提出的一個EAI系統平臺。它提供了非常多EAI本身所應具有的功能,比如業務流程監控、集成開發環境、工作流用戶接口、業務流程管理、分布式計算架構以及作為應用容器的功能等。能夠說JBossESB在功能上是較為強大的。但相對于上面的總線而言,它的技術架構方案是最獨立的。由于它除了支持J2EE標準外,對于JBI規范壓根就不沾邊。當然也就不存在JBI規范中的規范化消息路由、服務引擎和綁定組件了。JBossESB除了支持 Web Service外,還支持多種的遠程調用協議,比如JMS。僅僅是相對于ServiceMixCXF而言,假設要對JBossESB進行擴展,可能要花費較大的時間和精力。

JBossESB相對上述的開源項目而言,一個非常大的優勢在于文檔資料是最為豐富和完備的。所以在開發和擴展上減小了不小的阻力。它而且依托于成熟的JBoss社區,周圍齊全的開源項目支持,為后期的平臺擴展提供了豐富的選擇空間。

?

轉載于:https://www.cnblogs.com/mfrbuaa/p/3794346.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376887.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376887.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376887.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Paxos算法(Basic Paxos 與 Multi-Paxos思想)

目錄Basic Paxos三個角色達成共識的方法對于Basic Paxos的總結Multi-Paxos領導者優化 Basic Paxos 執行referencePaxos 算法包含 2 個部分: 1、Basic Paxos : 描述多節點之間如何就某個值達成共識 2、Multi-Paxos : 描述執行多個Basic Paxos實…

vs2012下調試mvc4源代碼

當前流行的應該是mvc3才對。然后在研究mvc3的源代碼時候,Html這個屬性下的擴展方法Partial()都沒有。IntelliSense不會提示該方法,找了半天的資料也問了一些博友,沒看到好的解決棒法。最后沒轍另辟蹊蹺,就開始著手研究mvc4的源代碼…

JAVA UDP網絡編程學習筆記

一、UDP網絡編程概述 采用TCP協議通信時,客戶端的Socket必須先與服務器建立連接,連接建立成功后,服務器端也會持有客戶端連接的Socket,客戶端的Socket與服務器端的Socket是對應的,它們構成了兩個端點之間的虛擬通信鏈路…

firefox 插件開發

IDE,你可以嘗試下NetBeans foxbeans這個插件。轉載于:https://www.cnblogs.com/sode/archive/2013/01/25/2876562.html

13種負載均衡算法

目錄前言(1)輪轉調度(Round-Robin Scheduling)算法(2)加權輪轉調度(Weighted Round-Robin Scheduling)算法(3)隨機均衡調度(Random Scheduling&am…

對于shell腳本參數獲取時的一點小技巧

問題如下: 根據腳本參數的個數$#進行一個循環,在依次輸出每個參數$1 $2 $3...... 我有一個循環變量i $i 取到這時的i為1,我想使用這個1再去調用$1,也是就是打印出第一個參數 就是$($i)的意思來取到第幾個參數,當然$($i)是不好用的…

(轉)頁游安全攻與防,SWF加密和隱藏密匙

原文鏈接:http://netsecurity.51cto.com/art/201211/364775.htm 頁游,最最核心的就是客戶端(swf)與服務端的游戲通信了。游戲通信產生的封包,內容是否可識別,可篡改,可重放,處理邏輯…

C++自動類型推導 : auto 與 decltype 用法

基本用法與區別 auto 總是推導出“值類型”,絕不會是“引用”,如果有引用,auto會把引用去掉,推導出值類型; auto 可以附加上 const、volatile、*、& 這樣的類型修飾符,得到新的類型。 auto x 10L; // auto推導為…

C++智能指針使用指南 part1:基本使用

加粗樣式>TOC 智能指針是代理模式的具體應用,它使用 RAII 技術代理了裸指針,能夠自動釋放內存, 無需程序員干預,所以被稱為“智能指針”。 智能指針不是指針,而是一個對象,所以不要對其調用delete&…

AS3.0 BitmapData類介紹

注:文中的Bitmapdata和BMD均為同一意思BitmapData,BMD為其縮寫一,概括: Bitmapdata繼承Object對象,實現IBitmapDrawable接口,這個接口有什么用,你可以理解為Drawable,能被畫。官方介紹是:IBitma…

C++使用JSON的序列化與反序列化

這里使用的json解析工具為JSON for Modern C,使用的話僅需要包含頭文件。 獲取方式:wget https://github.com/nlohmann/json/releases/download/v3.7.3/json.hpp JSON json的序列化功能和map一樣,用關聯數組的"[]"來任意添加數據&#xff0c…

iOS判斷為空或者只為空格

本文轉載至 :http://www.cnblogs.com/superhappy/archive/2012/11/08/2761403.html 經常有需求 要判斷不能為空,后臺老是鄙視不做非空判斷的前端 ,木辦法 只能寫一個。 第一種想法:我不就是判斷 是不是nil就可以了么。結果發現太天…

Hyper-V

Hyper-V:也就是虛擬化技術,允許終端用戶在同一臺機器上運行多個操作系統,支持32位和64位系統,可以直接在Windows 8上創建自己的虛擬機。開啟Hyper-V虛擬機需要更多的內存,正常運行需要至少4GB以上內存,所以…

sdut 1451 括號東東 DP

http://acm.sdut.edu.cn/sdutoj/problem.php?actionshowproblem&problemid1451 題意:中文..... 思路: pku有一道題,經典的括號匹配(區間DP)題目,那道題目是求的最長滿足條件的子串的長度,那…

CDN緩存替代算法

CDN緩存工作過程如下:用戶發出一個請求,如果請求被命中,緩存將對用戶的請求進行響應,返回其請求的數據;如果未被命中,緩存向上拉取用戶需要的數據,并對其存儲的數據進行替換。 緩存算法的意義在…

前端開發常用正則表達式

1、電話 var phone /(^[^1][0-9\-]{6,20}$)|(^(134|135|136|137|138|139|150|151|152|157|158|159|182|183|187|188|147|130|131|132|155|156|185|186|145|133|153|180|189|181|184)\d{8}$)/ 2、郵箱 var email /^([a-zA-Z0-9_.-])([a-zA-Z0-9_-])((\.[a-zA-Z0-9_-]{2,3}){1,…

android 中調用接口發送短信

轉載:http://ziyu-1.iteye.com/blog/1013932 android中可以通過兩種方式發送短信 第一:調用系統短信接口直接發送短信;主要代碼如下: Java代碼//直接調用短信接口發短信 SmsManager smsManager SmsManager.getDefault(); List…

linux 命令案例學習——文件搜索

兩個搜索文件的工具 locate ——僅僅通過文件名查找文件find ——依據文件的各種屬性在既定目錄(包括子目錄)里查找一個通常與文件搜索命令一起使用、處理搜索結果文件列表的命令 xargs1 locate 1.1 查找文件名中含有zip的文件名 locate zip 看下結…

Redis 緩存擊穿、緩存穿透、緩存雪崩的處理方法

常用的分布式緩存Redis單機并發量能達到萬級,常用的關系型數據庫MySQL一般并發量是千級,他們支持的并發量可能差十倍,所以要盡可能把流量攔截在緩存層。 緩存擊穿 一個并發訪問量比較大的key在某個時間過期,導致所有的請求直接打…

Java-- 異常與記錄日志

可以使用java.util.logging工具將輸出記錄在日志中。記錄日志的的功能還是很簡單的,下面直接鋪出代碼: 1 package com.exceptions;2 3 import java.io.*;4 import java.util.logging.Logger;5 6 class LoggingException extends Exception{7 private…