WEBSERVICE是一個通過網絡特別是INTERNET調用,執行斷序或連續任務的軟件模型。
開發者能創建一個客戶端應用調用一系列通過RPC或者消息服務來提供一些或大多數應用邏輯的WEB服務。開發者可以 定位一個發布的WEB服務,根據需要來使用它。
一個例子就是一個公司能提供WEB服務給它的顧客,讓顧客在發定單之前檢查產品的庫存量。另一個例子就是顧客能用聯邦快遞提供的WEB服務來跟蹤他們的快遞。
WEB服務用SOAP(簡單對象訪問協議),用如HTTP的傳輸協議來交換SOAP消息。SOAP消息是事實上就是個XML文檔,在WEB服務和調用中傳遞。
WEB服務能用任何語言編寫 ,在任何平台上運行。WEB服務的客戶端能用任意語言寫,也能在任意平台上運行。例如,一個在WINDOWS平台上運行,用DEPHI編寫的WEB服務能被在LINUX平台上JAVA編寫的服務調用。
WEB服務架構
WEB服務架構允許服務的開發者暴露所有級別的業務功能,換句話說,一個WEB服務可以是非常簡單的,如返回目前的溫度,也可以是一個復雜的應用。架構也允許多個服務結合一個新的功能應用。
WEB服務有三個獨立的角色,服務提供者,服務請求者,服務代理者。服務提供者創建服務,並提供給客戶應用。服務請求者也可能是多個服務的客戶。代理者,就是提供一個方式如服務注冊,讓服務提供者和服務請求者能夠對服務進行交互。
三個角色通過服務的發布,查找,綁定進行交互。服務提供者通過用代理者的發布接口讓客戶能訪問服務來通知代理者服務存在。發布信息描述了服務並說明服務定位在哪兒。服務請求者詢問代理者服務的定位。根據從代理者獲得的服務信息,請求者可以綁定或者調用這個服務。下面的圖總結了三者如何交互。
WEB服務標准
WEB服務開發基於的標准包括一些技術。主要的是SOAP,WSDL(WEB服務描述語言),UDDI(通用描述,發現,集成)和WSIL(WEB服務檢查語言)。
SOAP
Soap是一個獨立傳輸消息協議。每一個SOAP消息就是一個XML文檔。SOAP用單程消息,雖然它可能被合成請求回復的隊列。SOAP規范定義了XML消息的格式,規范了它容易HTTP協議路由,但沒有規范它的內容和它事實上是如何傳遞。
每一個SOAP文檔有一個根元素。這個根元素,文檔裡的第一個元素,包含文檔內所有的其它元素。在內有兩個部分:消息頭和消息體。消息頭包含路由或者內容數據,可能為空。消息體包括實際消息,也可能為空。
下面是一個簡單的SOAP消息例子,通過HTTP傳輸的目前BORLAND股價。
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "urn:stock-quote-services"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
BORL
關於SOAP更多信息請看下面URL的SOAP文檔:http://www.w3.org/2002/ws/,http://xml.apache.org/soap/
WEB服務描述語言(WSDL)
如果一個WEB服務不能為發現和調用,那麼這個WEB服務沒有任何意義。開發者必須知道WEB服務的足夠的信息才能寫出一個客戶程序調用它。WSDL是基於XML的,它被用來定義WEB服務說明如何訪問它。特別是它說明了WEB服務約定的消息和數據。通過檢查一個WEB服務的WSDL,什麼方法能調用,及如何用合適的參數調用。
更深入了解請看WSDL1。1規范:http://www.w3.org/TR/wsdl
通用描述,發現和集成(UDDI)
UDDI是個發展中的標准,用來描述,發布和發現業務開發者的WEB服務。它是一個WEB服務的分布式注冊信息的規范。一旦一個WEB服務開發,一個WSDL描述它的文檔將建,就有必要讓想用它描述的WEB服務的用戶獲得這個WSDL信息。當一個WEB服務通過UDDI注冊發布,潛在的用戶有一個方式來解析和學習關於這個WEB服務的存在。
UDDI注冊的內容接近電話路徑。在注冊白頁項裡是諸如名字,地址,和業務的電話號碼的信息。提供給一個或多個WEB服務。在黃頁項裡區分業務類型和業務分類。在綠頁項裡提供關於業務提供WEB服務的數據。
更多信息請看http://www.uddi.org
WEB服務檢查語言(WSIL)
WSIL象UDDI那樣,提供了一個發現WEB服務的方法。與UDDI集中式模型不同的是,WSIL用的是一種離散,分布模型,WSIL文檔允許WEB服務的顧客在網站上浏覽可用的WEB服務。
WSIL規范提供了用XML格式文檔來檢查一個WEB服務站點和一系列規則為這些信息是否可用標准。在一個文檔裡一個WSIL文檔搜集了多個參考為預先存的服務描述文檔。WSIL文檔是駐留在服務提供者的服務裡,以便於顧客能查處相關可用的服務。
更多關於WSIL,請看
http://www-106.ibm.com/developerworks/webservices/library/ws-wsilspec.html.
Java APIs for XML-based Remote Procedure Call (JAX-RPC)
JAX-RPC定義了JAVA開發者在他們的開發和應用WEB服務的應用中用到的JAVA應用接口。一個JAVA客戶端能應用在INTERNET上的一個遠程服務器上的一個WEB服務,即使這個服務在另一種平台,用另一語言編寫。一個JAX-RPC服務也能被非JAVA客戶端應用。
JAX-RPC用一種XML消息協議,諸如SOAP,通過網絡來傳遞一個遠程過程調用。例如,一個返回股票查詢的WEB服務將收到一個 包括客戶端的方法調用的SOAP HTTP請求。用JXA-RPC,服務將從SOAP消息裡解開方法調用,把它轉換成方法調用,接著調用它。接著服務用JAX-RPC把回復方法轉換成SOAP,把結果返回客戶端。客戶端收到SOAP消息,用JAX-RPC轉換成一個回復。
JAX-RPC運行時生成允許客戶和服務通訊的STUBS和TIES。一個STUB在客戶端,代表一個遠程服務,作為一個服務的代理。一個TIE,在服務器端,作為服務器端的代理。
更多信息請看
http://java.sun.com/xml/jaxrpc/index.html
http://java.sun.com/webservices/docs/1.0/tutorial/doc/JAXRPC.html.