張同楊
摘要:本文針對(duì)異構(gòu)系統(tǒng)集成中數(shù)據(jù)共享問(wèn)題,通過(guò)剖析Apache CXF開(kāi)源框架體系結(jié)構(gòu)及其組件構(gòu)成,分析CXF框架及SOA同類框架在不同條件下的性能對(duì)比,結(jié)合集團(tuán)級(jí)業(yè)務(wù)信息系統(tǒng)整合特點(diǎn),給出基于CXF框架構(gòu)建SOA的方法。理論分析與系統(tǒng)測(cè)試都表明Apache CXF在集團(tuán)級(jí)異構(gòu)信息系統(tǒng)集成方面具有明顯優(yōu)勢(shì)。
Abstract: Aiming at the problem of data sharing between heterogeneous systems, by analyzing the open source framework architecture of Apache CXF and its components, this paper analyzes the performance comparison between the CXF framework and the other SOA framework under different conditions. Combined with the practice of group business information system integration, this paper gives the method of building SOA application based on CXF framework. Both theoretical analysis and system test show that Apache CXF has the obvious advantages in the integration of heterogeneous information systems.
關(guān)鍵詞:面向服務(wù)架構(gòu);CXF;系統(tǒng)集成;SOA
Key words: service-oriented architecture;CXF;system integration;SOA
中圖分類號(hào):TP399 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-4311(2017)32-0083-05
1 SOA
集團(tuán)級(jí)業(yè)務(wù)系統(tǒng)數(shù)據(jù)一般涉及總部、區(qū)域公司、二級(jí)單位、基層單位業(yè)務(wù)數(shù)據(jù),以及諸如身份認(rèn)證系統(tǒng)、人力資源系統(tǒng)、郵件系統(tǒng)、設(shè)備信息系統(tǒng)等其他集團(tuán)級(jí)業(yè)務(wù)數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)范圍廣泛、種類繁多。集團(tuán)級(jí)業(yè)務(wù)系統(tǒng)持續(xù)集成所屬單位業(yè)務(wù)系統(tǒng)、其他集團(tuán)級(jí)業(yè)務(wù)系統(tǒng)的實(shí)時(shí)數(shù)據(jù),豐富和完善集團(tuán)級(jí)業(yè)務(wù)系統(tǒng)數(shù)據(jù)、提高數(shù)據(jù)質(zhì)量、降低數(shù)據(jù)導(dǎo)入導(dǎo)出復(fù)雜度、減少人工介入整理數(shù)據(jù)的工作量,在業(yè)務(wù)運(yùn)營(yíng)實(shí)踐中具有重要的現(xiàn)實(shí)意義。
然而,基于功能或過(guò)程的企業(yè)架構(gòu)一般是不同平臺(tái)、不同開(kāi)發(fā)工具、不同管理規(guī)范、不同需求、不同時(shí)期研發(fā)的多階段交錯(cuò)復(fù)雜業(yè)務(wù)系統(tǒng),體系結(jié)構(gòu)、平臺(tái)技術(shù)類型差異較大。這種差異和復(fù)雜嚴(yán)重影響了企業(yè)業(yè)務(wù)系統(tǒng)的敏捷性和穩(wěn)定性,從而影響到企業(yè)領(lǐng)導(dǎo)者的業(yè)務(wù)決策和企業(yè)核心能力的發(fā)揮。面對(duì)瞬息萬(wàn)變的市場(chǎng)需求,企業(yè)需要具有快速反應(yīng)、敏捷生存的能力,從而要求企業(yè)管理業(yè)務(wù)系統(tǒng)必須具有敏捷服務(wù)、快速重構(gòu)、資源重用及自由擴(kuò)充等特點(diǎn)。
1.1 SOA設(shè)計(jì)理念
SOA設(shè)計(jì)理念以“支持異質(zhì)、分散和容錯(cuò)”保持系統(tǒng)靈活性,以編排松散耦合軟件服務(wù)發(fā)布業(yè)務(wù)邏輯。在企業(yè)應(yīng)用集成領(lǐng)域中,SOA理念復(fù)用企業(yè)現(xiàn)有應(yīng)用,保護(hù)企業(yè)既有信息投資,對(duì)企業(yè)中的業(yè)務(wù)流程進(jìn)行靈活重構(gòu)與優(yōu)化,以服務(wù)方式構(gòu)建業(yè)務(wù)流程和服務(wù)對(duì)象,增強(qiáng)業(yè)務(wù)的適應(yīng)性和敏捷性。
1.2 SOA設(shè)計(jì)原則
SOA設(shè)計(jì)保持靈活性和松散耦合,設(shè)計(jì)原則主要是一致性原則,SOA架構(gòu)應(yīng)采用所有參與者都一致理解的方式整合內(nèi)容,統(tǒng)一管理,以減少開(kāi)發(fā)、集成及維護(hù)工作;服務(wù)粒度封裝適中原則,即應(yīng)有利于可用性、可維護(hù)性、可操作性、可拓展性及易用性,統(tǒng)籌適度封裝操作數(shù)量;自治原則,所有服務(wù)自我管理,獨(dú)立部署、版本控制及管理,單一更改不影響整個(gè)系統(tǒng);高內(nèi)聚原則,一個(gè)服務(wù)基于一個(gè)主題進(jìn)行合并和組裝;松耦合原則,服務(wù)之間透明訪問(wèn),一服務(wù)改變不影響其他服務(wù);服務(wù)調(diào)用原則,平臺(tái)技術(shù)中立,支持多種可傳輸協(xié)議和數(shù)據(jù)格式。
1.3 SOA協(xié)議棧
SOA架構(gòu)通過(guò)統(tǒng)一不同廠家和用戶的技術(shù)標(biāo)準(zhǔn)共識(shí),構(gòu)建協(xié)作規(guī)范以屏蔽差異。目前SOA技術(shù)標(biāo)準(zhǔn)分3類:元數(shù)據(jù)標(biāo)準(zhǔn)、基礎(chǔ)通信標(biāo)準(zhǔn)和信息交互標(biāo)準(zhǔn),從角色功能上劃分為傳輸層、消息層、描述層、管理層、服務(wù)組合層和表示層等6層,如圖1所示為SOA協(xié)議棧層次結(jié)構(gòu)。
2 Apache CXF基礎(chǔ)架構(gòu)及組件
ApacheCXF框架是由ObjectWeb Celti和CodeHaus XFire合并成立。ObjectWeb Celtix是開(kāi)源Java ESB框架,XFire則是SOAP堆棧。ApacheCXF融合ObjectWeb Celtix和CodeHaus XFire兩個(gè)開(kāi)源框架的功能,提供實(shí)現(xiàn)SOA所需要的核心ESB功能,包括SOA服務(wù)創(chuàng)建,服務(wù)路由,及QoS功能。CXF支持JAX-WS標(biāo)準(zhǔn),提供對(duì)多種 Binding、DataBinding、Transport 以及各種 Format 的支持。CXF可以根據(jù)實(shí)際需要,采用代碼優(yōu)先(Code First)或 WSDL 優(yōu)先(WSDL First)發(fā)布和使用Web Services。Apache CXF支持SOAP、XML/HTTP、RESTful HTTP或CORBA等協(xié)議,簡(jiǎn)化Service創(chuàng)建,易于和Spring無(wú)縫集成、易于異構(gòu)信息系統(tǒng)的持續(xù)集成,并提供數(shù)據(jù)安全傳輸機(jī)制。
2.1 Apache CXF體系結(jié)構(gòu)
CXF框架不為各組件創(chuàng)建和維護(hù)單獨(dú)的信道,而是使每個(gè)組件邏輯上與總線相連,以使所有組件相互連接起來(lái)。Bus組件是CXF框架的核心組件,為共享資源提供了一個(gè)可配置的場(chǎng)所。CXF框架使用Spring依賴注入、以總線方式串接Messaging組件、Interceptors組件、Transport組件、Data Binding組件、Frontend組件、Service Model組件、Binding組件和WS-Support組件,以使得各個(gè)組件相互通訊。endprint
在具體實(shí)現(xiàn)中,抽象類AbstractBasicInterceptor Provider實(shí)現(xiàn)InterceptorProvider接口,CXFBusImpl繼承AbstractBasicInterptorProvider類。ExtensionManagerBus類繼承CXFBusImpl類以實(shí)現(xiàn)Bus拓展性。所有對(duì)CXF的Data Bindings、Binding、Transport等功能的引用最終轉(zhuǎn)化為Bus組件的方法和內(nèi)容。圖3示出了BUS組件的實(shí)現(xiàn)類結(jié)構(gòu)圖。
通過(guò)對(duì)Bus進(jìn)行擴(kuò)展,可以方便地容納自己的資源,或替換現(xiàn)有的資源。Bus默認(rèn)以Spring依賴注入,串接運(yùn)行態(tài)各組件。Bus默認(rèn)由SpringBusFactory實(shí)現(xiàn),在構(gòu)造過(guò)程中,SpringBusFactory搜索META-INF/cxf(就包含在 CXF的Jar中)下的所有Bean配置文件,構(gòu)建單獨(dú)ApplicationContext。
2.2 消息組件和攔截器
消息組件、攔截器組件和相位組件共同構(gòu)成CXF框架消息層。Apache CXF的Messaging、Phase和Interceptors類結(jié)構(gòu)如圖4所示。Messaging 接口是CXF傳遞信息的基礎(chǔ),所有操作最終都轉(zhuǎn)化成對(duì)一定格式消息的操作。圖4示出了CXF中消息層各組件實(shí)現(xiàn)類結(jié)構(gòu)圖。
CXF以消息處理為中心,建立在一個(gè)由消息、攔截器和攔截器鏈(Interceptpr Chain)組成的通用消息層之上。CXF通過(guò)Interceptors對(duì)消息進(jìn)行處理,實(shí)現(xiàn)諸如消息壓縮、SOAP消息處理等主要功能。攔截器的通用方法主要有handleMessage和handleFault,分別對(duì)應(yīng)消息處理和錯(cuò)誤處理。一般在消息傳遞及處理的過(guò)程中,通過(guò)攔截器對(duì)CXF進(jìn)行安全認(rèn)證等功能拓展。圖5示出的代理模式,將在生成目標(biāo)對(duì)象前創(chuàng)建一個(gè)具有與原初目標(biāo)對(duì)象相同接口方法的代理,并在真實(shí)方法生效前,在代理的方法中添加定制特性方法實(shí)現(xiàn)細(xì)節(jié)業(yè)務(wù)邏輯。
CXF框架組合多個(gè)攔截器形成攔截器鏈,其中InterceptorChain用于實(shí)現(xiàn)增減Interceptor、控制消息處理及處置異常消息功能。圖6及圖7示出Apache CXF攔截器客戶端實(shí)現(xiàn)過(guò)程和Apache CXF攔截器服務(wù)端實(shí)現(xiàn)基本過(guò)程。
2.3 前端編程模型
前端組件(Front-Ends)為CXF框架提供了創(chuàng)建服務(wù)的編程模型。CXF服務(wù)器端基于JAX-WS和JAX-RS規(guī)范的Frontend組件與客戶端交互。在實(shí)現(xiàn)上,JAX-WS和JAX-RS提供FactoryBean部件依賴于Frontend組件的FactoryBean類,而FactoryBean類由依賴于由Client、Endpoint及Server接口實(shí)現(xiàn)的Endpoint組件,該組件通過(guò)Interceptor接口、Fault接口和Interceptorchain接口依賴于Interceptors組件。圖8示出了CXF前端應(yīng)用類結(jié)構(gòu),ServerFactoryBean類作用于服務(wù)器端點(diǎn),AbstractServiceFactory類應(yīng)用于簡(jiǎn)化前端模式的實(shí)現(xiàn),而ClientFactoryBean類和ClientProxyFactoryBean類都基于ClientFactoryBean類。(圖8)
2.4 Service模型
CXF框架中的服務(wù)通過(guò)服務(wù)模型來(lái)表示。它主要有兩部分:ServiceInfo和服務(wù)本身。ServiceInfo作用類似WSDL,包含接口信息、綁定、端點(diǎn)(EndPoint)等信息;服務(wù)則包含了ServiceInfo、數(shù)據(jù)綁定、攔截器和服務(wù)屬性等信息??墒褂肑ava類和WSDL來(lái)創(chuàng)建服務(wù)。一般是由前端ServiceFactory完成服務(wù)的創(chuàng)建。
在具體實(shí)現(xiàn)上,動(dòng)態(tài)客戶端應(yīng)用中Service組件包括Service、ServiceBuilder和ServiceImpl三個(gè)接口實(shí)現(xiàn)factory、invoker和model組件。其中model核心接口是ServiceInfo根組件,分別由InterfaceInfo組件、BindingInfo組件和EndpointInfo組件繼承。
2.5 數(shù)據(jù)綁定、綁定及傳輸協(xié)議組件
綁定提供了在傳輸之上映射具體格式和協(xié)議的方法,主要的兩個(gè)類是Binding和BindingFactory。BindingFactory負(fù)責(zé)創(chuàng)建Binding。
Data Bindings以生成XML schema的方式實(shí)現(xiàn)XML和Java之間的映射,數(shù)據(jù)綁定組件由Data Bindings主接口和Aegis組件、JAXB組件、XMLBeans組件及MTOM組件構(gòu)成。綁定組件由Bindings接口(Binding、BindFactory、BindFactoryManager)和coloc、CORBA、http、object、SOAP和XML六個(gè)實(shí)現(xiàn)組件構(gòu)成。
為了對(duì)綁定和前端屏蔽傳輸細(xì)節(jié),CXF框架通過(guò)注冊(cè)MessageObserver獲得通知的方式,提供用于消息發(fā)送的Conduit傳輸對(duì)象和Destination消息接收對(duì)象。在具體實(shí)現(xiàn)上,CXF傳輸組件由Transport接口(Conduits對(duì)象和Destiations對(duì)象)和8個(gè)基礎(chǔ)業(yè)務(wù)實(shí)現(xiàn)組件(http、http_jetty、http_osgi、https、https_jetty、jms、servlet和loca Transport組件)構(gòu)成。
3 異構(gòu)系統(tǒng)集成體系結(jié)構(gòu)
在設(shè)計(jì)實(shí)現(xiàn)中,基于SOA設(shè)計(jì)理念定義的規(guī)范和標(biāo)準(zhǔn),無(wú)須了解交互方系統(tǒng)內(nèi)部實(shí)現(xiàn)細(xì)節(jié),屏蔽Windows、Linux及Android等不同平臺(tái)下的Java、.NET、C/C++、C#各類語(yǔ)言的差異,業(yè)務(wù)系統(tǒng)CXF框架作為對(duì)外界業(yè)務(wù)系統(tǒng)交互的SOA引擎,通過(guò)webservice的方式對(duì)基于XML規(guī)范的WSDL文件操作,實(shí)現(xiàn)異構(gòu)系統(tǒng)數(shù)據(jù)共享。圖9指出了集團(tuán)級(jí)業(yè)務(wù)系統(tǒng)基于CXF框架集成異構(gòu)業(yè)務(wù)系統(tǒng)的基本結(jié)構(gòu)。endprint
服務(wù)器端調(diào)用方法把XML格式的SOAP請(qǐng)求/響應(yīng)消息轉(zhuǎn)換成Java目標(biāo)方法調(diào)用,客戶端調(diào)用方法把對(duì)SEI代理的方法調(diào)用轉(zhuǎn)換成XML格式的SOAP請(qǐng)求和響應(yīng),SOAP消息處理結(jié)構(gòu)如圖10所示,SOAP消息的序列化與反序列化。
基于CXF基礎(chǔ)框架構(gòu)建SOA應(yīng)用,實(shí)現(xiàn)上述序列化與反序列化過(guò)程,一般采用以下基本步驟:
①導(dǎo)入%CXF_HOME%\ lib下jar包配置基礎(chǔ)編譯環(huán)境。
②編寫服務(wù)接口基類。
package com.cnpc.server;
import java.util.List;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.cnpc.pojo.User;
@WebService
public interface HelloWorld {
String sayHi(@WebParam(name="text")String text);
String sayHiToUser(User user);
String[] SayHiToUserList(List
}
③編寫服務(wù)接口的實(shí)現(xiàn)類
package com.cnpc.server;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.cnpc.pojo.User;
@WebService(
endpointInterface="com.CNPC.server.HelloWorld",
serviceName="HelloWorld")
public class HelloWorldImpl implements HelloWorld {
Map
new LinkedHashMap
public String sayHi(@WebParam(name = "text") String text) {
return "Hello,"+text;
}
public String sayHiToUser(User user) {
users.put(users.size()+1, user);
return "Hello,"+user.getName();
}
public String[] SayHiToUserList(List
String[] result = new String[userList.size()];
int i = 0;
for(User u:userList){
result[i] = "Hello " + u.getName();
i++;
}
return result;
}
}
④服務(wù)發(fā)布實(shí)現(xiàn)類
package com.cnpc.server;
import javax.xml.ws.Endpoint;
public class webServiceApp {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("web service start");
HelloWorldImpl implementor =
new HelloWorldImpl();
String address =
"http://localhost:8080/helloWorld";
Endpoint.publish(address, implementor);
System.out.println("web service started");
}
}
⑤驗(yàn)證服務(wù)發(fā)布情況如圖11。
⑥編寫實(shí)現(xiàn)客戶端實(shí)現(xiàn)類
package com.cnpc.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.cnpc.pojo.User;
import com.cnpo.server.HelloWorld;
public class HelloWorldClient {
/**
* @param args
*/
public static void main(String[] args) {
JaxWsProxyFactoryBean jwpfb = new JaxWsProxyFactoryBean();
jwpfb.setServiceClass(HelloWorld.class);
jwpfb.setAddress("http://localhost:8080/helloWorld");
HelloWorld hw = (HelloWorld) jwpfb.create();
User user = new User();
user.setName("某油田");
user.setDescription("第一采油廠");
System.out.println(hw.sayHiToUser(user));
}
}
4 傳輸性能分析
4.1 無(wú)附加安全策略測(cè)試
圖12測(cè)試時(shí)間表明,至少在測(cè)試程序中使用的數(shù)據(jù),Metro2.0平均請(qǐng)求處理速度快于Axis2及CXF。在XML數(shù)據(jù)轉(zhuǎn)換中,此三種框架協(xié)議棧具有相同的處理速度。這是在Metro和CXF框架中可以預(yù)料的,因?yàn)镸etro和CXF都是基于JAXB標(biāo)準(zhǔn)實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的。由此可以判斷,Axis2數(shù)據(jù)綁定框架實(shí)現(xiàn)以及Axis2采用也默認(rèn)采用的數(shù)據(jù)綁定實(shí)現(xiàn)具有與JAXB一樣的運(yùn)行速度。
具有安全策略的測(cè)試性能比較,圖13顯示了基于如下安全配置的測(cè)試時(shí)間:①普通型:無(wú)安全策略(數(shù)據(jù)同圖12)。②用戶名令牌:WS安全策略基于純文本用戶令牌環(huán)請(qǐng)求。③標(biāo)記:WS安全策略基于消息體和消息頭標(biāo)記時(shí)間戳。④加密標(biāo)記:安全策略基于標(biāo)記時(shí)間錯(cuò)的消息體和消息頭,并加密消息體。圖13,顯示了對(duì)于1000個(gè)輕量級(jí)請(qǐng)求的指標(biāo)化測(cè)試時(shí)間。
4.2 歸一化耗時(shí)對(duì)比
圖14顯示了基于相同的1000個(gè)請(qǐng)求及輕量級(jí)響應(yīng)的歸一化相對(duì)時(shí)間。以上四種安全配置的測(cè)試結(jié)果顯示,Axis2總是響應(yīng)最慢的集成框架。Metro與CXF的差別小于CXF與Axis2:的差別, Metro框架總是最快的,Metro 框架比CXF框架快了10%,CXF比Axis2快近兩倍。圖15顯示基于100個(gè)重量級(jí)響應(yīng)指標(biāo)化測(cè)試時(shí)間對(duì)比結(jié)果。
圖16顯示相對(duì)時(shí)間(均歸一化為CXF結(jié)果)基于相同的100個(gè)請(qǐng)求和較重量級(jí)響應(yīng)。在這個(gè)測(cè)試用例中,Axis2又一次比Metro和CXF(再次約是CXF的一半速度)慢好多,在輕量級(jí)消息響應(yīng)中 Metro和CXF的差別大于逆轉(zhuǎn) CXF大約快了15%。在這個(gè)測(cè)試用例中,Axis2又一次比Metro和CXF(再次約是CXF的一般速度)慢好多,在輕量級(jí)消息響應(yīng)中Metro和CXF的差別大于逆轉(zhuǎn)CXF大約快了15%?;谝陨蠝y(cè)試報(bào)告,Metro 2.0在基本的請(qǐng)求/響應(yīng)處理過(guò)程中比Axis 2及CXF 2.17要快。對(duì)于WebService安全性問(wèn)題,Metro的XWSS函數(shù)庫(kù)整體上比Axis2和CXF采用的函數(shù)庫(kù)快。
4.3 性能分析
綜合以上測(cè)試結(jié)果分析,CXF框架在服務(wù)提供應(yīng)用中對(duì)重量級(jí)長(zhǎng)消息(500KB及以上)的傳輸性能比Axis2具有更短的時(shí)間響應(yīng)時(shí)間。
5 結(jié)束語(yǔ)
本文在解析SOA設(shè)計(jì)理念的基礎(chǔ)上,深入剖析了Apache CXF開(kāi)源框架體系結(jié)構(gòu)及其組件構(gòu)成,剖析附加安全策略與非附加安全策略的情況下CXF傳輸性能,并給出基于CXF異構(gòu)系統(tǒng)集成的一種實(shí)現(xiàn)方法。SOA和開(kāi)源框架對(duì)各類異構(gòu)系統(tǒng)的集成在企業(yè)業(yè)務(wù)整合開(kāi)展過(guò)程中具有重要作用。SOA的實(shí)施過(guò)程無(wú)論采用自頂而下逐步深入細(xì)化的過(guò)程,還是采用自底向上業(yè)務(wù)逐步融合的過(guò)程,都是一個(gè)持續(xù)集成生長(zhǎng)發(fā)展的過(guò)程。SOA實(shí)施過(guò)程無(wú)論從初始、到受控管理、到定義清晰、到量化管理以致持續(xù)優(yōu)化不斷成熟并使組織受益,都是一個(gè)持續(xù)發(fā)展、逐步推進(jìn)的過(guò)程。
參考文獻(xiàn):
[1]盧致杰,覃正,韓景倜,王立華,等.SOA體系設(shè)計(jì)方法研究[J].工業(yè)工程,2004,7(6):14-16.
[2]湯瀚秋.基于Axis2和CXF的Web Service傳輸性能測(cè)試方案研究[J].軟件導(dǎo)刊,2012,11(6):15-16.
[3]Krafzig D, Banke K, Slama D. Enterprise SOA: Service-Oriented Architecture Best Practices. USA, Prentice Hall PTR, 2004: 41-59.
[4]Nicolai M.著.SOA實(shí)踐指南:分布式系統(tǒng)的設(shè)計(jì)藝術(shù)[M]. 程樺譯.北京:電子工業(yè)出版社,2008:1-283.
[5]Mark D.Hansen著.使用Java Web 服務(wù)構(gòu)建SOA[M].成保棟譯.北京:電子工業(yè)出版社,2009:1-535.
[6]SOA Design Patterns [M]. 1st ed. Boston: Pearson Education, Inc, 2009.
[7]A Study Case of Restful Frameworks in Raspberry Pi:A Performance and Energy Overview: Luiz Henrique Nunes, Edvard Oliveira, Julio Cezar Estrella, Stephan Reiff-Marganiec
[8]劉壯業(yè).面向服務(wù)架構(gòu)若干關(guān)鍵問(wèn)題研究 [J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(3):600-603
[9]盧致杰.覃正.韓景倜.王立華.SOA體系設(shè)計(jì)方法研究[J].工業(yè)工程,2004,7(6):15-19
[10]Hanscn M.D.著.使用Java.Web服務(wù)構(gòu)建SOA[M].成保棟譯.北京:電子工業(yè)出版社,2009:1-283.
[11]吳家菊.劉剛.基于面向服務(wù)架構(gòu)的敏捷供應(yīng)鏈信息集成研究 [J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(19):3445-3448.
[12]Nicolai M.Josuttis著.SOA 實(shí)踐指南-分布式系統(tǒng)設(shè)計(jì)的藝術(shù)[M].程樺譯.北京:電子工業(yè)出版社,2008:1-283.
[13]余浩,朱成,丁鵬,著.SOA實(shí)踐-構(gòu)建基于Java Web 服務(wù)和BPEL的企業(yè)級(jí)應(yīng)用[M].北京:電子工業(yè)出版社,2008:1-310.
[14]Thomas Erl著.SOA服務(wù)設(shè)計(jì)原則[M].郭耀譯.北京:人民郵電出版社,2009:1-346.
[15]Thomas Erl Clive Gee.Jurgen Kress著.下一代SOA服務(wù)技術(shù)與面向服務(wù)簡(jiǎn)明指南[M].盧濤譯.北京:電子工業(yè)出版社,2015:1-196.endprint