張志剛
摘 要:REST(RepresentationalStateTransfer)表述性狀態(tài)轉(zhuǎn)移是目前比較流行的WebService架構(gòu)風(fēng)格,為軟件設(shè)計(jì)定義了一組架構(gòu)約束和原則。REST的Java實(shí)現(xiàn)框架眾多,CXF集成了Celtix和XFire兩個(gè)開源框架,使得開發(fā)Webservice的工作變得更加簡單,靈活。文章介紹了CXF的基本概念,系統(tǒng)架構(gòu),并對CXF的功能模塊和實(shí)現(xiàn)原理進(jìn)行了較為詳細(xì)的介紹。
關(guān)鍵詞:REST;CXF;RESTfulWebService;SpringMVC
REST是Roy Thomas Fielding博士于2000年在他的博士畢業(yè)論文中首次提出,中文翻譯為表述性狀態(tài)轉(zhuǎn)移,它是一種簡單,靈活的架構(gòu)風(fēng)格,主要思想是基于Http構(gòu)建數(shù)據(jù)訪問接口。REST的所有操作均是無狀態(tài)的,針對不同的訪問請求,數(shù)據(jù)提供統(tǒng)一的接口,返回Json,XML等格式的數(shù)據(jù)。
目前,有多種基于Java的restful web servie實(shí)現(xiàn)方式,比較流行的包括Rails,Axis2,JAX-RS,Restlet,CXF等。其中CXF是一種輕量級的Restful實(shí)現(xiàn)框架,該框架已經(jīng)成為Apache的頂級項(xiàng)目,它可以方便的與各種MVC框架結(jié)合使用,為企業(yè)級應(yīng)用系統(tǒng)提供安全,可靠的數(shù)據(jù)支持。
一、CXF框架
1.概述
CXF是Apache下的一個(gè)頂級SOA簡單架構(gòu),它實(shí)現(xiàn)了企業(yè)服務(wù)總線ESB框架和設(shè)計(jì)模式。CXF是兩個(gè)開源項(xiàng)目Celtix和XFire結(jié)合的產(chǎn)物,極大的融合了二者的優(yōu)點(diǎn)。CXF提供多種技術(shù)支持,包括web Servivce架構(gòu)JAX-WS的支持,并支持Binding,DataBing等功能模塊的實(shí)現(xiàn),CXF可以與Spring mvc等系統(tǒng)開發(fā)架構(gòu)實(shí)現(xiàn)無縫集成使用。
CXF支持SOAP1.1,1.2和XML/HTTP等多種協(xié)議規(guī)則,通常使用JAX-WS規(guī)范作為Apache CXF webservice的實(shí)現(xiàn)規(guī)范。采用代碼優(yōu)先(Code First)或者 WSDL 優(yōu)先(WSDL First)可以非常輕松的實(shí)現(xiàn) Web Services 的發(fā)布和使用。
2.CXF體系結(jié)構(gòu)
CXF是基于REST架構(gòu)風(fēng)格實(shí)現(xiàn)的開源技術(shù)框架,提供了創(chuàng)建服務(wù)的編程模型。它包括七個(gè)主要的組成部分,分別是BUS,消息傳遞和攔截器(Messaging and Interceptors),前端(Front End),服務(wù)模型(Service Model), 數(shù)據(jù)綁定(Data Binding),端口綁定(Protocl Binding),傳輸(Transports)。其中,BUS是CXF的核心,它為資源的共享提供了可配置的環(huán)境。CXF通過消息處理中心,并通過建立攔截請求,方便開發(fā)人員進(jìn)行消息傳遞,請求處理及錯(cuò)誤處理。服務(wù)模型包括ServiceInfo和服務(wù),數(shù)據(jù)通過前端創(chuàng)建,采用ServiceFactory來完成服務(wù)生成。數(shù)據(jù)綁定定義了傳輸層上數(shù)據(jù)的具體格式和協(xié)議,使開發(fā)者方便的進(jìn)行消息的發(fā)送和接口。傳輸(Transports)層向綁定和前端屏蔽傳輸?shù)木唧w細(xì)節(jié)。CXF的整體架構(gòu)如下圖所示:
二、CXF實(shí)現(xiàn)RESTful Web Service的原理
當(dāng)前CXF已經(jīng)全面基于REST實(shí)現(xiàn),通過底層封裝,使得開發(fā)人員只注重于業(yè)務(wù)邏輯開發(fā),極大的簡化了開發(fā)web service的難度。
訪問服務(wù)提供方首先開發(fā)和調(diào)試Web service服務(wù)接口,調(diào)試通過后,web服務(wù)通過中介發(fā)布訪問服務(wù)接口,并在UDDI注冊中心進(jìn)行信息注冊,實(shí)現(xiàn)服務(wù)的發(fā)布過程。Web service調(diào)用者向服務(wù)中介發(fā)出資源請求,中介將根據(jù)請求信息查詢UDDI注冊中心,并提供滿足請求條件的資源數(shù)據(jù)給服務(wù)請求者,實(shí)現(xiàn)數(shù)據(jù)綁定,返回的資源描述信息以WSDL形式顯示,并且Web頁面可以直接查詢資源信息,具體原理如下圖所示:
三、結(jié)語
針對Web service開發(fā)問題,本文介紹了一種比較新型的Java Restful實(shí)現(xiàn)架構(gòu)CXF。從概念,體系結(jié)構(gòu)和實(shí)現(xiàn)原理三個(gè)方面對CXF做了詳細(xì)介紹。隨著RPC,微服務(wù)等概念的興起,基于RESTful的web service相關(guān)技術(shù)將不斷完善和應(yīng)用。
參考文獻(xiàn):
[1]Fensel D, Bussler C. The Web Service Modeling Framework WSMF[J]. Electronic Commerce Research & Applications, 2003, 1(2):113-137.
[2]孫磊. 基于Spring+CXF實(shí)現(xiàn)用戶文件上傳的WebService[J]. 電腦編程技巧與維護(hù), 2012(3):16-22.
[3]潘冰. 基于Rails的RESTful Web Service研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2010, 27(10):188-190.
[4]文明瑤. 基于Jersey框架的RESTful Web Service的研究與實(shí)現(xiàn)[J]. 中國科技博覽, 2016(2):361-363.