甄少鵬
(桂林電子科技大學 計算機科學與工程學院,廣西 桂林 541000)
WebService使用一系列的標準協議來對各種請求做出響應,使用HTTP/TCP等標準的網絡協議完成底層的傳輸,以XML作為數據表示的基礎,通過SOAP協議在系統間交換信息,通過WSDL等來描述和記錄Web服務所產生和接收的消息,通過UDDI來登記和尋找服務,這些技術構成了Web服務的支撐技術。
SOAP:簡單對象訪問協議SOAP(Simple Object Access Protocol)是一種非集中的、基于分布式網絡環境的、基于XML的輕量級協議,它通過把HTTP與XML的靈活性和良好擴展性組合在一起,以實現異構平臺的程序之間的消息傳遞和互操作。
WSDL:Web服務描述語言WSDL(Web Service Description Language)是W3C用于描述Web服務的規范,被用來描述一個Web服務能夠做什么,該服務在什么地方,以及如何調用該服務。WSDL利用XML來描述Web服務,它將Web服務描述為一組對消息進行操作的網絡端點。
UDDI:通用描述、發現和集成協議UDDI(Universal Description,Discovery Integration)是一套基于Web的、分布式的、為Web服務提供的信息注冊中心的實現標準規范,同時也包含一組使企業能將自身提供的Web服務加以注冊,以使得別的企業能夠發現的訪問協議的實現標準。UDDI是為了加速Web服務的推廣,加強Web服務的互操作能力而推出的一個計劃,其目的是建立一個全球性的、與平臺無關的、開放式的架構。
這些技術的任何一種都在發展中,每種技術提供了Web服務的下一步發展、描述或者發現的一個標準。然而,Web服務的目標之一是無縫的、自動的業務集成:軟件將動態地從未知的公司發現、訪問、集成和調用新服務,這種動態集成需要SOAP、WSDL和UDDI的結合,以便為將來的動態業務提供動態的、標準的基礎設施。下圖說明了這三種技術之間的關系。

從圖上可以看出,SOAP、WSDL和UDDI之間的關系可以描述如下:Web服務客戶端應用程序需要找到位于網絡上某處的服務端應用程序。客戶端通過名字、分類、標識符或者所支持的規范查詢UDDI注冊中心,一旦找到,客戶便從UDDI注冊中心獲取WSDL文檔的位置信息。按照WSDL中發現的XML模式生成一個SOAP消息,并發送一個請求給服務端。
XFire、Axis是目前比較流行的Webservice的實現框架。兩者是并列的新一代Web Service框架,通過提供簡單的API支持Web Service各項標準協議,幫助方便快速地開發Web Service應用。
一般情況下,我們通過HTTP作為Web Service的傳輸協議,這樣我們只需啟動一個Web服務器,這樣客戶端就可以通過 HTTP訪問到Web Service服務。為了集成Spring容器,XFire專門提供一個XFireSpringServlet,我們可以在web.xml中配置該 Servlet,將Spring容器中定義的 Web Service在某個URI下發布。
XFire為訪問服務端Web Service提供了各種方便的方式:我們一般根據服務地址和窄接口類創建客戶調用程序。在不能獲得服務窄接口類的情況下,XFire允許我們通過WSDL文件生成客戶端調用程序,通過指定服務接口的方式調用服務。但對于服務方法返回類型或參數類型是自定義對象或者集合時候,目前axis支持比較好且方便上手。Xfire不支持WSDL2.0,而Axis2支持WSDL2.0。
不管Web Service服務端和客戶端采用什么技術框架,只要是Web Service,遵從Web Service的技術規范和實現架構,就能實現無障礙調用通信,如xfire框架實現的web服務發布后,只要告之服務地址及其他相關信息,通過axis框架實現的客戶端也能正常調用訪問。