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