前言
面向服務(wù)架構(gòu)soa以其獨(dú)特的優(yōu)勢越來越受到企業(yè)的重視,它可以根據(jù)需求通過網(wǎng)絡(luò)對松散耦合的粗粒度應(yīng)用組件進(jìn)行分布式部署、組合和使用。服務(wù)層是SOA的基礎(chǔ),可以直接被應(yīng)用調(diào)用,從而有效控制系統(tǒng)中與軟件代理交互的人為依賴性。Soa的開發(fā)方法一般主要有開源的dubbo、dubbox、mule、wso2、cxf,以及付費(fèi)的oracle soa、ibm soa等。
SOA是什么
SOA是一種粗粒度、松耦合服務(wù)架構(gòu),服務(wù)之間通過簡單、精確定義接口進(jìn)行通訊,不涉及底層編程接口和通訊模型。SOA可以看作是B/S模型、XML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)/Web Service技術(shù)之后的自然延伸。
SOA將能夠幫助軟件工程師們站在一個新的高度理解企業(yè)級架構(gòu)中的各種組件的開發(fā)、部署形式,它將幫助企業(yè)系統(tǒng)架構(gòu)者以更迅速、更可靠、更具重用性架構(gòu)整個業(yè)務(wù)系統(tǒng)。較之以往,以SOA架構(gòu)的系統(tǒng)能夠更加從容地面對業(yè)務(wù)的急劇變化。
SOA的實(shí)施具有幾個鮮明的基本特征。實(shí)施SOA的關(guān)鍵目標(biāo)是實(shí)現(xiàn)企業(yè)IT資產(chǎn)的最大化作用。要實(shí)現(xiàn)這一目標(biāo),就要在實(shí)施SOA的過程中牢記以下特征:
可從企業(yè)外部訪問
隨時(shí)可用
粗粒度的服務(wù)接口分級
松散耦合
可重用的服務(wù)
服務(wù)接口設(shè)計(jì)管理
標(biāo)準(zhǔn)化的服務(wù)接口
支持各種消息模式
精確定義的服務(wù)契約
SOA服務(wù)具有平***立的自我描述XML文檔。Web服務(wù)描述語言(WSDL, Web Services Description Language)是用于描述服務(wù)的標(biāo)準(zhǔn)語言。
SOA 服務(wù)用消息進(jìn)行通信,該消息通常使用XML Schema來定義(也叫做XSD, XML Schema Definition)。消費(fèi)者和提供者或消費(fèi)者和服務(wù)之間的通信多見于不知道提供者的環(huán)境中。服務(wù)間的通訊也可以看作企業(yè)內(nèi)部處理的關(guān)鍵商業(yè)文檔。
在一個企業(yè)內(nèi)部,SOA服務(wù)通過一個扮演目錄列表(directory listing)角色的登記處(Registry)來進(jìn)行維護(hù)。應(yīng)用程序在登記處(Registry)尋找并調(diào)用某項(xiàng)服務(wù)。統(tǒng)一描述,定義和集成(UDDI, Universal Description, Definition, and Integration)是服務(wù)登記的標(biāo)準(zhǔn)。
每項(xiàng)SOA服務(wù)都有一個與之相關(guān)的服務(wù)品質(zhì)(QoS, quality of service)。QoS的一些關(guān)鍵元素有安全需求(例如認(rèn)證和授權(quán)),可靠通信(注:可靠消息是指,確保消息“僅且僅僅”發(fā)送一次,從而過濾重復(fù)信息。),以及誰能調(diào)用服務(wù)的策略。
隨著全球信息化的浪潮,信息化產(chǎn)業(yè)不斷發(fā)展、延伸,已經(jīng)深入了眾多的企業(yè)及個人,SOA系統(tǒng)架構(gòu)的出現(xiàn),將給信息化帶來一場新的革命。
縱觀信息化建設(shè)與應(yīng)用的歷程,盡管出現(xiàn)過XML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)、Unicode、UML等眾多信息標(biāo)準(zhǔn),但是許多異構(gòu)系統(tǒng)之間的數(shù)據(jù)源仍然使用各自獨(dú)立的數(shù)據(jù)格式、元數(shù)據(jù)以及元模型,這是信息產(chǎn)品提供商一直以來形成的習(xí)慣。各個相對獨(dú)立的源數(shù)據(jù)集成一起,往往通過構(gòu)建一定的數(shù)據(jù)獲取與計(jì)算程序來實(shí)現(xiàn),這樣的做法需要花費(fèi)大量工作。信息孤島大量存在的事實(shí),使信息化建設(shè)的ROI(投資回報(bào)率)大大降低,ETL成為集中這些異構(gòu)數(shù)據(jù)的有效工具。 ETL常用于從源系統(tǒng)中提取數(shù)據(jù),將數(shù)據(jù)轉(zhuǎn)換為與目標(biāo)系統(tǒng)相兼容的格式,然后將其裝載到目標(biāo)系統(tǒng)中。數(shù)據(jù)經(jīng)過獲取、轉(zhuǎn)換、裝載后,要產(chǎn)生應(yīng)用價(jià)值,還需另外的數(shù)據(jù)展現(xiàn)工具予以實(shí)現(xiàn),如此復(fù)雜的數(shù)據(jù)應(yīng)用過程,必定產(chǎn)生高昂的應(yīng)用成本。
結(jié)構(gòu)化的數(shù)據(jù)管理尚可通過以上方法,予以實(shí)現(xiàn)其集成應(yīng)用。在非結(jié)構(gòu)化的內(nèi)容方面,這些具有挑戰(zhàn)性的問題令人生畏。內(nèi)容管理的應(yīng)用方案基于不同的信息化應(yīng)用系統(tǒng),而且大部分是縱向的以組織部門為界限的。在內(nèi)容管理市場中,經(jīng)常使用來自不同廠商的產(chǎn)品來提供這些解決方案。即使是同一個廠商的產(chǎn)品,相互之間的功能也是經(jīng)常重疊,并且無法集成。
隨著信息化建設(shè)的深入,不同應(yīng)用系統(tǒng)之間的功能界限已趨于模糊。同時(shí)企業(yè)資源計(jì)劃系統(tǒng)和協(xié)同商務(wù)系統(tǒng),又需要商業(yè)智能的分析展現(xiàn)數(shù)據(jù)提供用戶操作依據(jù)。
在激烈競爭且多變的市場環(huán)境下,企業(yè)的管理模式很難固化,應(yīng)用傳統(tǒng)的信息化軟件,當(dāng)企業(yè)要做出一些改動時(shí)需要面對巨大的挑戰(zhàn)。
2000年WebService出現(xiàn)后,SOA被譽(yù)為下一代Web服務(wù)的基礎(chǔ)框架,已經(jīng)成為計(jì)算機(jī)信息領(lǐng)域的一個新的發(fā)展方向。
SOA的出現(xiàn)給傳統(tǒng)的信息化產(chǎn)業(yè)帶來新的概念,不再是各自獨(dú)立的架構(gòu)形式,能夠輕松的互相聯(lián)系組合共享信息。
可復(fù)用以往的信息化軟件?;赟OA的協(xié)同軟件提供了應(yīng)用集成功能,能夠?qū)RP、CRM、HR等異構(gòu)系統(tǒng)的數(shù)據(jù)集成。
松散耦合方式,只要充分了解業(yè)務(wù)的進(jìn)程,就可以不用編寫一行代碼,通過流程圖實(shí)現(xiàn)一套我們自己的信息系統(tǒng)。就像已經(jīng)給你準(zhǔn)備好了磚瓦和水泥,只需要想好蓋什么樣的房子就可以輕松的蓋起。加快開發(fā)速度,并且減少了開發(fā)和維護(hù)的費(fèi)用。軟件將所有的管理提煉成表單和流程,以記錄管理的內(nèi)容,指定過程的流轉(zhuǎn)方向。
更簡便的信息和數(shù)據(jù)集成。信息集成功能可以將散落在廣域網(wǎng)和局域網(wǎng)上的文檔、目錄、網(wǎng)頁輕松集成,加強(qiáng)了信息的協(xié)同相關(guān)性。同時(shí),復(fù)雜、成本高昂的數(shù)據(jù)集成,也變成了可以簡單且低成本實(shí)現(xiàn)的參數(shù)設(shè)定。創(chuàng)建了完全集成的信息化應(yīng)用新領(lǐng)域。
在具體的功能實(shí)現(xiàn)上,SOA協(xié)同軟件所實(shí)現(xiàn)的功能包括了知識管理、流程管理、人事管理、客戶管理、項(xiàng)目管理、應(yīng)用集成等,從部門角度看涉及了行政、后勤、營銷、物流、生產(chǎn)等。從應(yīng)用思想上看,SOA協(xié)同軟件中的信息管理功能,全面兼顧了貫穿整個企業(yè)組織的信息化軟硬件投入。盡管各種IT技術(shù)可以用于不同的用途,但是信息管理并沒有任意地將信息分為結(jié)構(gòu)化或者非結(jié)構(gòu)化的部分,因此ERP等結(jié)構(gòu)化管理系統(tǒng)并不是信息化建設(shè)的全部;同時(shí),信息管理也沒有將信息化解決方案劃分為部門的視圖,因此僅僅以部分為界限去構(gòu)建軟件應(yīng)用功能的思想未必是不可撼動的?;赟OA的協(xié)同軟件與 ERP、CRM等傳統(tǒng)應(yīng)用軟件相比,關(guān)鍵的不同在于它可以在合適的時(shí)間、合適的地點(diǎn)并且有正當(dāng)理由向需要它提供服務(wù)的任何用戶提供服務(wù)。
利用SOA架構(gòu)開發(fā)的優(yōu)點(diǎn):
第一、更易維護(hù)
業(yè)務(wù)服務(wù)提供者和業(yè)務(wù)服務(wù)使用者的松散耦合關(guān)系及對開放標(biāo)準(zhǔn)的采用確保了該特性的實(shí)現(xiàn)。建立在以 SOA基礎(chǔ)上的信息系統(tǒng),當(dāng)需求發(fā)生變化的時(shí)候,不需要修改提供業(yè)務(wù)服務(wù)的接口,只需要調(diào)整業(yè)務(wù)服務(wù)流程或者修改操作即可,整個應(yīng)用系統(tǒng)也更容易被維護(hù)。
第二、更高的可用性
該特點(diǎn)是在于服務(wù)提供者和服務(wù)使用者的松散耦合關(guān)系上得以發(fā)揮與體現(xiàn)。使用者無須了解提供者的具休實(shí)現(xiàn)細(xì)節(jié)。
第三、更好的伸縮性
依靠業(yè)務(wù)服務(wù)設(shè)計(jì)、開發(fā)和部署等所采用的架構(gòu)模型實(shí)現(xiàn)伸縮性。使得服務(wù)提供者可以互相彼此獨(dú)立地進(jìn)行調(diào)整,以滿足新的服務(wù)需求。
下面詳細(xì)論述幾種主要的開發(fā)方法和工具:
一、Dubbo
DUBBO是淘寶公司的一個分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。淘寶公司的許多應(yīng)用就是采用dubbo,運(yùn)行穩(wěn)定成功?,F(xiàn)在,不少企業(yè)采用dubbo開發(fā)應(yīng)用系統(tǒng)。Dubbo是簡單有效的soa架構(gòu),值得采用。
相比于其他服務(wù)框架,DUBBO有如下優(yōu)勢:
透明化的遠(yuǎn)程方法調(diào)用,就像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法,只需簡單配置,沒有任何API侵入;
軟負(fù)載均衡及容錯機(jī)制,可在內(nèi)網(wǎng)替代F5等硬件負(fù)載均衡器,降低成本,減少單點(diǎn);
服務(wù)自動注冊與發(fā)現(xiàn),注冊中心基于接口名查詢服務(wù)提供者的IP地址,并且能夠平滑添加或刪除服務(wù)提供者。
其核心部分包含:
遠(yuǎn)程通訊:提供對多種基于長連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請求-響應(yīng)”模式的信息交換方式。
集群容錯:提供基于接口方法的透明遠(yuǎn)程過程調(diào)用,包括多協(xié)議支持,以及軟負(fù)載均衡,失敗容錯,地址路由,動態(tài)配置等集群支持。
自動發(fā)現(xiàn):基于注冊中心目錄服務(wù),使服務(wù)消費(fèi)方能動態(tài)的查找服務(wù)提供方,使地址透明,使服務(wù)提供方可以平滑增加或減少機(jī)器。
Dubbo有如下功能:
透明化的遠(yuǎn)程方法調(diào)用,就像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法,只需簡單配置,沒有任何API侵入。
軟負(fù)載均衡及容錯機(jī)制,可在內(nèi)網(wǎng)替代F5等硬件負(fù)載均衡器,降低成本,減少單點(diǎn)。
服務(wù)自動注冊與發(fā)現(xiàn),不再需要寫死服務(wù)提供方地址,注冊中心基于接口名查詢服務(wù)提供者的IP地址,并且能夠平滑添加或刪除服務(wù)提供者。
Dubbo基本原理-分布式服務(wù)框架
快速啟動
Dubbo采用全Spring配置方式,透明化接入應(yīng)用,對應(yīng)用沒有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基于Spring的Schema擴(kuò)展進(jìn)行加載。
服務(wù)提供者:定義服務(wù)接口
定義服務(wù)接口:(該接口需單獨(dú)打包,在服務(wù)提供方和消費(fèi)方共享)
在服務(wù)提供方實(shí)現(xiàn)接口
在服務(wù)提供方實(shí)現(xiàn)接口:(對服務(wù)消費(fèi)方隱藏實(shí)現(xiàn))
用Spring配置聲明暴露服務(wù)
加載Spring配置
服務(wù)消費(fèi)者:
加載Spring配置,并調(diào)用遠(yuǎn)程服務(wù):(也可以使用IoC注入)
Zookeeper注冊中心安裝
建議使用dubbo-2.3.3以上版本的zookeeper注冊中心客戶端。
Zookeeper是Apache Hadoop的子項(xiàng)目,強(qiáng)度相對較好,建議生產(chǎn)環(huán)境使用該注冊中心。
Dubbo未對Zookeeper服務(wù)器端做任何侵入修改,只需安裝原生的Zookeeper服務(wù)器即可,所有注冊中心邏輯適配都在調(diào)用Zookeeper客戶端時(shí)完成。
開源網(wǎng)址:
http://alibaba.github.io/dubbo-doc-static/Home-zh.htm
Zookeeper下載地址:
http://zookeeper.apache.org/releases.html
Zookeeper注冊中心安裝:
http://alibaba.github.io/dubbo-doc-static/Zookeeper+Registry+Installation-zh.htm
二、Mule
Mule是一個以Java為核心的輕量級的消息框架和整合平臺,基于EIP(Enterprise Integeration Patterns,由Hohpe和Woolf編寫的一本書)而實(shí)現(xiàn)的。Mule的核心組件是UMO(UniversalMessage Objects,從Mule2.0開始UMO這一概念已經(jīng)被組件Componse所代替),UMO實(shí)現(xiàn)整合邏輯。UMO可以是POJO,JavaBean等等。它支持30多種傳輸協(xié)議(file,F(xiàn)TP,UDP,TCP,email,HTTP,SOAP,JMS等),并整合了許多流行的開源項(xiàng)目,比如Spring,ActiveMQ,CXF,Axis,Drools等。
Mule Studio是一個功能強(qiáng)大、用戶界面友好的基于Eclipse的開發(fā)工具。使用者不需要深入了解Mule的XML配置語法,就可以在幾分鐘內(nèi)輕松的創(chuàng)建、編輯、測試Mule ESB流程。Mule Studio基于Eclipse技術(shù),包含3個主要部件:項(xiàng)目結(jié)構(gòu)樹、工具箱和畫布。項(xiàng)目結(jié)構(gòu)樹包含整個項(xiàng)目的目錄結(jié)構(gòu)。
Mule是一個企業(yè)服務(wù)總線(ESB)消息框架。它的主要特性包括:
1.基于J2EE1.4的企業(yè)消息總線(ESB)和消息代理(broker)。
2.可插入的連接性:比如Jms,jdbc,tcp,udp,multicast,http,servlet,smtp,pop3,file,xmpp等。
3.支持任何傳輸之上的異步,同步和請求響應(yīng)事件處理機(jī)制。
4.支持Axis或者Glue的Web Service.
5.靈活的部署結(jié)構(gòu)[Topologies]包括Client/Server,P2P, ESB 和Enterprise Service Network.
6.與Spring 框架集成:可用作ESB 容器,也可以很容易的嵌入到Spring應(yīng)用中。
7.使用基于SEDA處理模型的高度可伸縮的企業(yè)服務(wù)器。
8.強(qiáng)大的基于EIP模式的事件路由機(jī)制等。
三、wso2
WSO2ESB是一種根據(jù)ApacheV2.0許可證發(fā)布的快速、輕量級和靈活的企業(yè)服務(wù)總線產(chǎn)品。使用ESB在HTTP、HTTPS、JMS、mail等協(xié)議基礎(chǔ)上通過業(yè)務(wù)系統(tǒng)過濾、轉(zhuǎn)換、路由和處理SOAP,二進(jìn)制、純XML和文本消息。
WSO2ESB是一個為企業(yè)準(zhǔn)備的完全成熟的ESB。WSO2ESB是建立在Apache Synapse項(xiàng)目基礎(chǔ)上的。Apache Synapse是使用Apache Axis2創(chuàng)建的。
應(yīng)用程序發(fā)送消息到ESB,該消息由ESB Transport撿起。
Transport通過消息管道發(fā)送消息。像安全和可靠的消息傳遞的信息方面的質(zhì)量受到這個pipe的照顧。在該pipe內(nèi)部是axis2的流入和流出流。ESB可以有如下兩種操作:
消息中介:使用單管道
代理服務(wù):使用獨(dú)立的管道運(yùn)輸?shù)讲煌拇矸?wù)。
消息轉(zhuǎn)換和消息路由可以看做一個獨(dú)立的單元。如圖所示,消息轉(zhuǎn)換組件和路由組件之間沒有明顯的分離。WSO2ESB調(diào)用這個中介框架。一些轉(zhuǎn)換發(fā)生在路由決定之前,一些轉(zhuǎn)換發(fā)生在路由決定之后。這一部分由Synapse執(zhí)行。
然后根據(jù)目的地將消息注入到獨(dú)立的管道。在這里再次確定消息服務(wù)方面的質(zhì)量。
傳輸層負(fù)責(zé)通過ESB所需的傳輸協(xié)議的轉(zhuǎn)換。
該圖顯示了如何通過ESB的體系架構(gòu)將請求傳到一個實(shí)際的endpoint。響應(yīng)處理是這個操作的反向操作。
所有這些組件可以通過WSO2ESB管理控制臺管理和檢測。
ESB Components
Transports
WSO2ESB支持所有廣泛使用的傳輸協(xié)議包括HTTP/s、JMS、VFS和特定領(lǐng)域的傳輸如FIX。一個新的傳輸協(xié)議使用axis2傳輸框架輕松地被添加和插入到ESB中。不同的傳輸工具為ESB帶來各種消息內(nèi)容/負(fù)載。
傳輸內(nèi)容:
消息建設(shè)者:允許使用內(nèi)容類型標(biāo)識消息并使變成普通的XML消息集。因此每個內(nèi)容類型都有相關(guān)聯(lián)的建設(shè)者。WSO2ESB包含基于文本的內(nèi)容信息的建設(shè)者和二進(jìn)制內(nèi)容建設(shè)者。
消息格式:建設(shè)者的相反的搭檔。格式化程序通過指出傳輸協(xié)議處理前消息內(nèi)容的類型將消息轉(zhuǎn)換回原始格式。類似transport的用戶可以使用axis2框架實(shí)現(xiàn)消息的建設(shè)和格式化。
參閱Transports
端點(diǎn)(Endpoints)
Endpoints作為具有傳輸協(xié)議的邏輯組件。兩套端點(diǎn)地址和WSDL。地址endpoint可以使用任何可用的transport調(diào)度消息。
參閱Endpoints
代理服務(wù)(ProxyServices)
在WSO2ESB中代理服務(wù)是實(shí)現(xiàn)使用消息接收器和開放接收消息的虛擬服務(wù)。一個代理服務(wù)可以使用類似于一個普通的web服務(wù)地址的url訪問。代理服務(wù)允許將WSDL發(fā)布到用于先前使用的程序組。可以使用任何可用的傳輸協(xié)議從代理服務(wù)接收和發(fā)送消息。
參閱Proxy Services Sample
主題(Topics)
Topics是另一個恢復(fù)消息處理事件的實(shí)施,包括subscription和events.
參閱eventing
中介(Mediators)
WSO2ESB的power仍然是為不同方面提供服務(wù)的全面調(diào)節(jié)庫。使用mediator庫實(shí)現(xiàn)廣泛使用MEPs和EIPs。由于WSO2ESB提供了一個健康的框架,使得開發(fā)者寫一個mediator非常容易。mediators可以使用包括Java,scripting和Spring的各種技術(shù)。
參閱mediator
序列(Sequences)
Sequence充當(dāng)mediators的配置組件。Sequence允許阻止mediators實(shí)現(xiàn)管道和過濾模式。
參閱Sequences
任務(wù)和命令(Tasksand Commands)
Tasks提供在WSO2ESB中配置計(jì)劃工作的設(shè)施并且允許執(zhí)行mediation的內(nèi)部或外部命令。
參閱Tasks
QoS組件(QoSComponents)
Qos組件實(shí)現(xiàn)可靠的消息傳遞和代理服務(wù)自帶的Apache的Rempart和Sandesha兩個實(shí)現(xiàn)模塊的安全性。
配置、庫/注冊(Configuration,Repository/Registry)
Configuration是ESB架構(gòu)的架構(gòu)圖。WSO2ESB提供了一個內(nèi)置的 Repository/Registry存儲配置和配置元數(shù)據(jù),而且提供了使用遠(yuǎn)程庫設(shè)施。
管理和配置界面(Managementand Configuration GUI)
有助于在生產(chǎn)環(huán)境中運(yùn)行WSO2ESB組件可以在組件中找到。這些組件實(shí)現(xiàn)集群、高可用性和負(fù)載平衡功能。
GUI組件進(jìn)行綜合管理、配置和檢測GUI。GUI通過分離前端和后端的關(guān)注實(shí)現(xiàn)了分層架構(gòu)。這允許用戶使用一個GUI控制臺連接到多個后臺。
WSO2ESB基于組件的體系結(jié)構(gòu)加強(qiáng)了使用OSGi的松耦合性質(zhì)。所有組件都建為OSGi包。
四、cxf
ApacheCXF 是一個開源的Services框架,CXF幫助您利用Frontend 編程 API來構(gòu)建和開發(fā)Services,像JAX-WS。這些Services可以支持多種協(xié)議,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多種傳輸協(xié)議上運(yùn)行,比如:HTTP、JMS或者JBI,CXF大大簡化了Services的創(chuàng)建,同時(shí)它繼承了XFire傳統(tǒng),一樣可以天然地和Spring進(jìn)行無縫集成。
功能特性
CXF 包含了大量的功能特性,但是主要集中在以下幾個方面:
支持Web Services標(biāo)準(zhǔn):CXF支持多種Web Services標(biāo)準(zhǔn),包含SOAP、BasicProfile、WS-Addressing、WS-Policy、WS-ReliableMessaging和 WS-Security。Frontends:CXF支持多種“Frontend”編程模型,CXF實(shí)現(xiàn)了JAX-WS API(遵循JAX-WS 2.0 TCK版本),它也包含一個“simplefrontend”允許客戶端和 EndPoint 的創(chuàng)建,而不需要Annotation注解。CXF既支持 WSDL優(yōu)先開發(fā),也支持從Java的代碼優(yōu)先開發(fā)模式。容易使用: CXF設(shè)計(jì)得更加直觀與容易使用。有大量簡單的 API用來快速地構(gòu)建代碼優(yōu)先的 Services,各種Maven的插件也使集成更加容易,支持 JAX-WS API,支持Spring 2.0更加簡化的XML配置方式,等等。支持二進(jìn)制和遺留協(xié)議:CXF的設(shè)計(jì)是一種可插撥的架構(gòu),既可以支持 XML,也可以支持非XML的類型綁定,比如:JSON和CORBA。
項(xiàng)目目標(biāo)
下面列出了來自Apache CXF官方網(wǎng)站的項(xiàng)目目標(biāo)。
概要
高性能可擴(kuò)展簡單且容易使用支持多種標(biāo)準(zhǔn)
支持 JAX-WS、JAX-RS、JSR-181和 SAAJ;支持SOAP 1.1、1.2、WS-IBasicProfile、WS-Security、WS-Addressing、WS-RM 和 WS-Policy;支持WSDL 1.1、2.0;支持MTOM;
多種傳輸方式、Bindings、DataBindings和Format
Bindings:SOAP、REST/HTTP;DataBndings:目前支持JAXB 2.0、Aegis兩種,默認(rèn)是JAXB 2.0。XMLBeans、Castor和JiBX數(shù)據(jù)綁定方式將在CXF 2.1版本中得到支持;格式(Format):XML、JSON;傳輸方式:HTTP、Servlet、JMS和Jabber;可擴(kuò)展的API允許為CXF增加其它的Bindings,以能夠支持其它的消息格式,比如:CSV和固定記錄長度。
2Apache CXF特點(diǎn)
靈活部署
輕量級容器:可在Tomcat或基于Spring的容器中部署Services;集成JBI:可以在如ServiceMix,OpenESB or Petals 等等的JBI容器中將它部署為一個服務(wù)引擎;集成 SCA:可以部署在如Tuscany之類的SCA容器中;集成J2EE:可以在J2EE 應(yīng)用服務(wù)器中部署 Services,比如:Geronimo、JOnAS、JBoss、WebSphereApplication Server 和WebLogic Application Server,以及Jetty和Tomcat;獨(dú)立的Java 客戶端/服務(wù)器。
支持多種編程語言
全面支持JAX-WS 2.0 客戶端/服務(wù)器編程模型;支持 JAX-WS 2.0 synchronous、asynchronous和one-way API‘s;支持JAX-WS 2.0 Dynamic Invocation Interface (DII) API;支持wrapped and non-wrapped風(fēng)格;支持XML messaging API;支持JavaScript和ECMAScript 4 XML (E4X),客戶端與服務(wù)端均支持;通過Yoko支持CORBA;通過Tuscany支持SCA;通過ServiceMix支持JBI;
代碼生成
Java toWSDL;WSDLto Java;XSDto WSDL;WSDLto XML;WSDLto SOAP;WSDLto Service;
CXF 框架支撐環(huán)境
CXF 框架是一種基于 Servlet 技術(shù)的SOA應(yīng)用開發(fā)框架,要正常運(yùn)行基于 CXF應(yīng)用框架開發(fā)的企業(yè)應(yīng)用,除了 CXF框架本身之外,還需要JDK和Servlet容器的支持。
五、dubbox
當(dāng)當(dāng)網(wǎng)我們根據(jù)自身的需求,為Dubbo實(shí)現(xiàn)了一些新的功能,并將其命名為Dubbox(即DubboeXtensions)。
主要的新功能包括:
· 支持REST風(fēng)格遠(yuǎn)程調(diào)用(HTTP +JSON/XML):基于非常成熟的JBoss RestEasy框架,在dubbo中實(shí)現(xiàn)了REST風(fēng)格(HTTP + JSON/XML)的遠(yuǎn)程調(diào)用,以顯著簡化企業(yè)內(nèi)部的跨語言交互,同時(shí)顯著簡化企業(yè)對外的Open API、無線API甚至AJAX服務(wù)端等等的開發(fā)。事實(shí)上,這個REST調(diào)用也使得Dubbo可以對當(dāng)今特別流行的“微服務(wù)”架構(gòu)提供基礎(chǔ)性支持。 另外,REST調(diào)用也達(dá)到了比較高的性能,在基準(zhǔn)測試下,HTTP+ JSON與Dubbo 2.x默認(rèn)的RPC協(xié)議(即TCP + Hessian2二進(jìn)制序列化)之間只有1.5倍左右的差距,詳見下文的基準(zhǔn)測試報(bào)告。
· 支持基于Kryo和FST的Java高效序列化實(shí)現(xiàn):基于當(dāng)今比較知名的Kryo和FST高性能序列化庫,為Dubbo 默認(rèn)的RPC協(xié)議添加新的序列化實(shí)現(xiàn),并優(yōu)化調(diào)整了其序列化體系,比較顯著的提高了Dubbo RPC的性能,詳見下圖和文檔中的基準(zhǔn)測試報(bào)告。
· 支持基于嵌入式Tomcat的HTTP remoting體系:基于嵌入式tomcat實(shí)現(xiàn)dubbo的HTTP remoting體系(即dubbo-remoting-http),用以逐步取代Dubbo中舊版本的嵌入式Jetty,可以顯著的提高REST等的遠(yuǎn)程調(diào)用性能,并將Servlet API的支持從2.5升級到3.1。(注:除了REST,dubbo中的WebServices、Hessian、HTTP Invoker等協(xié)議都基于這個HTTP remoting體系)。
· 升級Spring:將dubbo中Spring由2.x升級到目前最常用的3.x版本,減少項(xiàng)目中版本沖突帶來的麻煩。
· 升級ZooKeeper客戶端:將dubbo中的zookeeper客戶端升級到最新的版本,以修正老版本中包含的bug。
注:dubbox和dubbo 2.x是兼容的,沒有改變dubbo的任何已有的功能和配置方式(除了升級了Spring之類的版本)。另外,dubbox也嚴(yán)格遵循了Apache 2.0許可證的要求。
總之,soa架構(gòu)具有松耦合、高復(fù)用、開發(fā)、維護(hù)靈活方便、支持多平臺多系統(tǒng)、對原系統(tǒng)良好支持、消除信息孤島等許多優(yōu)點(diǎn),以dubbo為代表的開發(fā)方法有一百多種,以上5種主要的方法值得借鑒采用,相信一定會帶來極好的價(jià)值!
-
SOA
+關(guān)注
關(guān)注
1文章
300瀏覽量
28026
發(fā)布評論請先 登錄
OptiSystem應(yīng)用:SOA波長變換器(XGM)
OptiSystem應(yīng)用:寬帶SOA特性

SOA架構(gòu)開發(fā)小助手PAVELINK.SOA-Converter 2.1.2新版本發(fā)布

OptiSystem應(yīng)用:SOA波長變換器(XGM)
OptiSystem應(yīng)用:寬帶SOA特性
OptiSystem應(yīng)用:SOA波長變換器(XGM)
基于IMOS平臺的偏振不敏感SOA設(shè)計(jì)

SOA關(guān)鍵技術(shù)專利分析(一)

基于遺傳算法的QD-SOA設(shè)計(jì)新方法

面向服務(wù)的整車EE架構(gòu)(SOA)設(shè)計(jì)開發(fā)咨詢服務(wù)

SOA光脈沖調(diào)制模塊簡介

9月26日云技術(shù)研討會 | SOA整車EE架構(gòu)開發(fā)流程及工具實(shí)施方案

SOA架構(gòu)開發(fā)小助手PAVELINK.SOA-Converter V1.4.2新版本發(fā)布

MOS管的安全工作區(qū)SOA詳解限制線介紹

評論