資源描述:
《深入淺出webservice》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應用文檔-天天文庫。
1、深入淺出WebService引言最近幾年WebService技術(shù)正在逐漸成熟,并在項目中開始廣泛使用?,F(xiàn)在我們簡單了解一下什么是WebService,如何使用它。什么是WebServiceWebService,顧名思義就是基于Web的服務。它使用Web方式,接收和響應外部系統(tǒng)的某種請求。比如,我們可以提供一個用于查詢天氣信息的WebService,然后可以用任何支持WebService的客戶端連接到這個Service進行查詢。很多企業(yè)用戶經(jīng)過多年的積累,已經(jīng)部署了很多應用系統(tǒng)。這些應用系統(tǒng)在企業(yè)運營中分擔著不同的功能或任務。隨著
2、企業(yè)的發(fā)展壯大,由于種種原因,這些企業(yè)用戶逐漸開始考慮如何對原有的這些舊系統(tǒng)進行整合。使用WebService方式將這些舊的應用系統(tǒng)整合起來,對外部提供一致的接口,不僅可以達到整合已有舊系統(tǒng)的目的,還可以避開因為完全構(gòu)建一個新系統(tǒng)而產(chǎn)生的風險。這樣就大大降低了項目的成本和風險。這就是SOA得以被客戶廣泛采納的原因。從WebService的工作模式上理解的話,它跟普通的Web程序(比如ASP、JSP等)并沒有本質(zhì)的區(qū)別,都是基于HTTP傳輸協(xié)議的程序。WebService與普通Web程序的區(qū)別主要在于:1)WebService只采
3、用HTTPPOST方式傳輸數(shù)據(jù),不使用GET方式;2)WebService從數(shù)據(jù)傳輸格式上作了限定。WebService所使用的數(shù)據(jù)均是基于XML格式的。目前標準的WebService在數(shù)據(jù)格式上主要采用SOAP協(xié)議。SOAP協(xié)議實際上就是一種基于XML編碼規(guī)范的文本協(xié)議。所以我們可以用下面這個圖來簡單地描述WebService:ClientWebServiceSOAP(XML)通迅協(xié)議:HTTPPOSTWebService和Web服務器的區(qū)別有人曾疑問WebService和Web服務器有什么區(qū)別呢?我們可以把WebServic
4、e看作是Web服務器上應用;反過來說,Web服務器是WebService運行時所必需的容器。這就是它們的區(qū)別和聯(lián)系。WebService的特點通過上面對WebService的簡要介紹,我們了解到WebService的主要特性:1)WebService通過HTTPPOST方式接受客戶的請求2)WebService與客戶端之間一般使用SOAP協(xié)議傳輸數(shù)據(jù)必須注意到,WebService標準本身并沒有限制服務端或客戶端的操作系統(tǒng)環(huán)境或編程語言環(huán)境。因為它本身就是為了跨平臺或跨應用而設(shè)計的。所以我們會看到很多聲稱支持WebService
5、的平臺。比如:MicrosoftVisualStudio開發(fā)平臺,Sping,Axis,XFire,Spring等等。我現(xiàn)在主要討論Java平臺上的WebService框架,實際上其中的原理也適用于其它平臺?;贘ava技術(shù)的WebService對于Java平臺,常見的WebService框架有Spring+XFire,Axis,CXF。這些框架各有千秋,本次討論以理解WebService的原理為目標,所以我選擇了CXF這個相對簡單的框架。通過使用CXF,我們可以了解WebService服務端的工作機制,實際上它跟其它WebSe
6、rvice框架在這方面沒有區(qū)別。我會介紹如何創(chuàng)建一個通用的WebService服務端;然后我還會介紹如何自己編寫一個通用的客戶端,直接通過HTTPPOST方式調(diào)用WebService服務端。CXF是Apache基金會組織下的一個項目,簡化了WebService服務端的創(chuàng)建過程。CXF實現(xiàn)了JAX-WS2.0規(guī)范,并通過了JAX-WS2.0TCK;CXF可以和Spring無縫集成;CXF支持多種傳輸協(xié)議(HTTP,JMS,Corba等),支持多種Binding數(shù)據(jù)格式(SOAP,XML,JSON等),支持多種DataBinding
7、數(shù)據(jù)類型(JAXB,Aegis)。CXF基于Interceptor的架構(gòu),使得整個框架非常易于擴展。本次我主要討論CXF在HTTP/SOAP模式下的處理機制。可以從http://cxf.apache.org/download.html下載CXF,目前最新版本是2.2.5。下載最新的版本后,解壓壓縮包,從lib目錄下至少要拿出下面幾個jar放入你的工程:cxf-2.2.5.jarantlr-2.7.7.jarcommons-codec-1.3.jarcommons-collections-3.2.1.jarcommons-lang
8、-2.4.jarcommons-logging-1.1.1.jarcommons-pool-1.5.2.jargeronimo-annotation_1.0_spec-1.1.1.jargeronimo-jaxws_2.1_spec-1.0.jargeronim