Web 服務(wù)是一種新型的 Web 應(yīng)用程序。它們是自適應(yīng)、自我描述、模塊化的應(yīng)用程序,這些應(yīng)用程序可以跨越Web 進(jìn)行發(fā)表、定位和調(diào)用。
Web 服務(wù)所執(zhí)行的功能可以是從簡單的請求到復(fù)雜的商業(yè)過程中的任何事。簡單的Web 服務(wù)可以提供股票報價或處理信用卡交易。一旦部署了 Web 服務(wù),其它的應(yīng)用 程序(及其它的 Web 服務(wù))可以發(fā)現(xiàn)和調(diào)用所部署的服務(wù)
因為 Web 服務(wù)要滿足所有這些需要,所以,有兩個技術(shù)是關(guān)鍵的:
- XML
XML 對於 Web 中移動的結(jié)構(gòu)化數(shù)據(jù)是非常重要的技術(shù)。如果 Web 要以可靠的、 自動的方式處理數(shù)據(jù),那麼 HTML
文檔是滿足不了此要求的。如果數(shù)據(jù)是以 XML 發(fā)送的,那麼 Web 服務(wù)可以以不同的、有效的方式來處理這些數(shù)據(jù)。XML
的內(nèi)容與表示的分離是很理想的。 - SOAP
SOAP,即簡單對象訪問協(xié)議,使用 XML 消息調(diào)用遠(yuǎn)程方法。Web 服務(wù)可以通過 HTTP 的 post 和 get 方法與遠(yuǎn)程的機(jī)器交互,但 SOAP 則更加強(qiáng)健和靈活。

在 Web 服務(wù)領(lǐng)域共有三個組件:
- 服務(wù)提供者 :
提供服務(wù)及維護(hù)注冊表以使服務(wù)可用。 - 服務(wù)代理 :
為服務(wù)提供交換場所。服務(wù)代理充當(dāng)服務(wù)提供者與服務(wù)請求者之間的中介。 - 服務(wù)請求者 :
與服務(wù)代理一起發(fā)現(xiàn) Web 服務(wù),然後調(diào)用這些服務(wù)以創(chuàng)建應(yīng)用程序。
有三個 Web 服務(wù)操作:
- 發(fā)布/撤除發(fā)布 :
發(fā)布和撤除發(fā)布是指將服務(wù)發(fā)布至注冊表(發(fā)布)或除去它們的一些項(撤除發(fā)布)。服務(wù)提供者聯(lián)系服務(wù)代理來發(fā)布或不發(fā)布某個服務(wù)。 - 查找 :
查找操作由服務(wù)請求者和服務(wù)代理共同完成。服務(wù)請求者描述他們正在尋找的服務(wù)類型,而服務(wù)代理發(fā)布與請求最匹配的結(jié)果。 - 綁定 :
綁定操作發(fā)生在服務(wù)請求者和服務(wù)提供者之間。雙方經(jīng)過適當(dāng)?shù)纳逃懼?,請求者就可以訪問和調(diào)用提供者所提供的服務(wù)。
Web 服務(wù)實現(xiàn)技術(shù)
對象界面描述: WSDL
如果我們打算發(fā)布所有的 Web 服務(wù),就需要有個描述它們的通用語言。 如果我正提供一個服務(wù),就需要將其描述給其他人,如果我想使用一個服 務(wù),就需要將我所尋找的服務(wù)描述出來。WSDL 就是基於此目的設(shè)計出來的。
對象訪問: SOAP
SOAP 提供一套標(biāo)記來表示在 Web 上使用 HTTP 傳輸協(xié)議(從 SOAP 1.1 以來,SMTP 也可以)
發(fā)送的不同信息塊的作用。但是,SOAP 向您提供的能力遠(yuǎn)遠(yuǎn)強(qiáng)於HTML。 使用 SOAP,您的程序向 SOAP 服務(wù)器發(fā)送"SOAP
請求""""""" XML 文檔,描述在遠(yuǎn)程機(jī)器上要調(diào)用的方法和所有要傳遞給它的參數(shù))。 SOAP 服務(wù)器將嘗試用那些參數(shù)執(zhí)行該方法,並將
SOAP 響應(yīng)發(fā)回程序。響應(yīng)可以是執(zhí)行的結(jié)果,也可以是相應(yīng)的錯誤消息。
對象界面發(fā)現(xiàn): UDDI
UDDI是用於 Web 服務(wù)注冊信息的規(guī)范。正如我們已經(jīng)討論過的,發(fā)布後的Web
服務(wù)是可以相互被發(fā)現(xiàn)的;通過在UDDI的發(fā)布服務(wù)器中注冊Web服務(wù)的信息,Web服務(wù)的請求者和代理可通過這個發(fā)布服務(wù)器找到它們所需要的服務(wù)。在發(fā)
布服務(wù)器中,業(yè)務(wù)邏輯和服務(wù)都是以通用的XML 格式描述的。在這些 XML 中的結(jié)構(gòu)數(shù)據(jù)很容易進(jìn)行搜索、分析和處理。
對象實現(xiàn): EJB, COM+, CORBA以及任何可用於對象實現(xiàn)的技術(shù)
SOAP 結(jié)構(gòu)
SOAP為在一個鬆散的、分布的環(huán)境中使用XML對等地交換結(jié)構(gòu)化的和類型化的信息提供了一個簡單且輕量級的機(jī)制
SOAP envelope (SOAP信封)
SOAP encoding rules (SOAP編碼規(guī)則)
SOAP RPC representation (SOAP RPC表示)
SOAP binding (SOAP綁定)
Request/Response Message
Request 調(diào)用遠(yuǎn)端對象的某個方法
Response 返回該方法運(yùn)行後的輸出結(jié)果
SOAP Message 結(jié)構(gòu)
SOAP 定義了一個"envelope""""""envelope"""""""""""""""""""XML詞匯使用namespace來區(qū)分彼此。
SOAP例子:
<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope">
<env:Header>
<ac:alertcontrol xmlns:ac="http://example.org/alertcontrol">
<ac:priority>1</ac:priority>
<ac:expires>2001-06-22 11:00am</ac:expires>
</ac:alertcontrol>
</env:Header>
<env:Body>
<alert:alert xmlns:alert="http://example.org/alert">
<alert:msg>上午11:30,發(fā)出計算機(jī)設(shè)備訂貨傳真。</alert:msg>
</alert:alert>
</env:Body>
</env:Envelope>
Web Services Description Language(WSDL)
使用XML進(jìn)行描述類似IDL, 不過是使用XML格式
描述了服務(wù)的操縱信息
WSDL是早先技術(shù)的綜合
WSDL Elements
Universal Description, Discovery and Integration(UDDI)
UDDI 注冊中心包含了通過程序手段可以訪問到的對企業(yè)和企業(yè)支持的服務(wù)所做的描述。此外,還包含對 Web
服務(wù)所支持的因行業(yè)而異的規(guī)范、分類法定義(用於 對於企業(yè)和服務(wù)很重要的類別)以及標(biāo)識系統(tǒng)(用於對於企業(yè)很重要的標(biāo)識)的引用。UDDI
提供了一種編程模型和模式,它定義與注冊中心通信的規(guī)則。UDDI 規(guī)范中所有 API 都用 XML 來定義,包裝在 SOAP 信封中,在
HTTP 上傳輸。
UDDI 消息的傳輸,通過 HTTP 從客戶機(jī)的 SOAP 請求傳到注冊中心節(jié)點(diǎn),然後再反向傳輸。注冊中心服務(wù)器的 SOAP 服務(wù)器接收
UDDI SOAP 消息、進(jìn)行處理,然後把 SOAP
響應(yīng)返回給客戶機(jī)。就注冊中心條例而言,客戶機(jī)發(fā)出的要修改數(shù)據(jù)的請求必須確保是安全的、經(jīng)過驗証的事務(wù)。