甄少鵬
(桂林電子科技大學(xué) 計算機科學(xué)與工程學(xué)院,廣西 桂林 541000)
WebService使用一系列的標準協(xié)議來對各種請求做出響應(yīng),使用HTTP/TCP等標準的網(wǎng)絡(luò)協(xié)議完成底層的傳輸,以XML作為數(shù)據(jù)表示的基礎(chǔ),通過SOAP協(xié)議在系統(tǒng)間交換信息,通過WSDL等來描述和記錄Web服務(wù)所產(chǎn)生和接收的消息,通過UDDI來登記和尋找服務(wù),這些技術(shù)構(gòu)成了Web服務(wù)的支撐技術(shù)。
SOAP:簡單對象訪問協(xié)議SOAP(Simple Object Access Protocol)是一種非集中的、基于分布式網(wǎng)絡(luò)環(huán)境的、基于XML的輕量級協(xié)議,它通過把HTTP與XML的靈活性和良好擴展性組合在一起,以實現(xiàn)異構(gòu)平臺的程序之間的消息傳遞和互操作。
WSDL:Web服務(wù)描述語言WSDL(Web Service Description Language)是W3C用于描述Web服務(wù)的規(guī)范,被用來描述一個Web服務(wù)能夠做什么,該服務(wù)在什么地方,以及如何調(diào)用該服務(wù)。WSDL利用XML來描述Web服務(wù),它將Web服務(wù)描述為一組對消息進行操作的網(wǎng)絡(luò)端點。
UDDI:通用描述、發(fā)現(xiàn)和集成協(xié)議UDDI(Universal Description,Discovery Integration)是一套基于Web的、分布式的、為Web服務(wù)提供的信息注冊中心的實現(xiàn)標準規(guī)范,同時也包含一組使企業(yè)能將自身提供的Web服務(wù)加以注冊,以使得別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實現(xiàn)標準。UDDI是為了加速Web服務(wù)的推廣,加強Web服務(wù)的互操作能力而推出的一個計劃,其目的是建立一個全球性的、與平臺無關(guān)的、開放式的架構(gòu)。
這些技術(shù)的任何一種都在發(fā)展中,每種技術(shù)提供了Web服務(wù)的下一步發(fā)展、描述或者發(fā)現(xiàn)的一個標準。然而,Web服務(wù)的目標之一是無縫的、自動的業(yè)務(wù)集成:軟件將動態(tài)地從未知的公司發(fā)現(xiàn)、訪問、集成和調(diào)用新服務(wù),這種動態(tài)集成需要SOAP、WSDL和UDDI的結(jié)合,以便為將來的動態(tài)業(yè)務(wù)提供動態(tài)的、標準的基礎(chǔ)設(shè)施。下圖說明了這三種技術(shù)之間的關(guān)系。
從圖上可以看出,SOAP、WSDL和UDDI之間的關(guān)系可以描述如下:Web服務(wù)客戶端應(yīng)用程序需要找到位于網(wǎng)絡(luò)上某處的服務(wù)端應(yīng)用程序??蛻舳送ㄟ^名字、分類、標識符或者所支持的規(guī)范查詢UDDI注冊中心,一旦找到,客戶便從UDDI注冊中心獲取WSDL文檔的位置信息。按照WSDL中發(fā)現(xiàn)的XML模式生成一個SOAP消息,并發(fā)送一個請求給服務(wù)端。
XFire、Axis是目前比較流行的Webservice的實現(xiàn)框架。兩者是并列的新一代Web Service框架,通過提供簡單的API支持Web Service各項標準協(xié)議,幫助方便快速地開發(fā)Web Service應(yīng)用。
一般情況下,我們通過HTTP作為Web Service的傳輸協(xié)議,這樣我們只需啟動一個Web服務(wù)器,這樣客戶端就可以通過 HTTP訪問到Web Service服務(wù)。為了集成Spring容器,XFire專門提供一個XFireSpringServlet,我們可以在web.xml中配置該 Servlet,將Spring容器中定義的 Web Service在某個URI下發(fā)布。
XFire為訪問服務(wù)端Web Service提供了各種方便的方式:我們一般根據(jù)服務(wù)地址和窄接口類創(chuàng)建客戶調(diào)用程序。在不能獲得服務(wù)窄接口類的情況下,XFire允許我們通過WSDL文件生成客戶端調(diào)用程序,通過指定服務(wù)接口的方式調(diào)用服務(wù)。但對于服務(wù)方法返回類型或參數(shù)類型是自定義對象或者集合時候,目前axis支持比較好且方便上手。Xfire不支持WSDL2.0,而Axis2支持WSDL2.0。
不管Web Service服務(wù)端和客戶端采用什么技術(shù)框架,只要是Web Service,遵從Web Service的技術(shù)規(guī)范和實現(xiàn)架構(gòu),就能實現(xiàn)無障礙調(diào)用通信,如xfire框架實現(xiàn)的web服務(wù)發(fā)布后,只要告之服務(wù)地址及其他相關(guān)信息,通過axis框架實現(xiàn)的客戶端也能正常調(diào)用訪問。