Web 服務的定義
Web 服務是一種新型的 Web 應用程序。它們是自適應、自我描述、模塊化的應用程序,這些應用程序可以跨越Web 進行發表、定位和調用。
Web 服務所執行的功能可以是從簡單的請求到復雜的商業過程中的任何事。簡單的Web 服務可以提供股票報價或處理信用卡交易。一旦部署了 Web 服務,其它的應用程序(及其它的 Web 服務)可以發現和調用所部署的服務
因為 Web 服務要滿足所有這些需要,所以,有兩個技術是關鍵的:
XML
XML 對於 Web 中移動的結構化數據是非常重要的技術。如果 Web 要以可靠的、自動的方式處理數據,那麼 Html 文檔是滿足不了此要求的。如果數據是以 XML 發送的,那麼 Web 服務可以以不同的、有效的方式來處理這些數據。XML 的內容與表示的分離是很理想的。
SOAP
SOAP,即簡單對象訪問協議,使用 XML 消息調用遠程方法。Web 服務可以通過 HTTP 的 post 和 get 方法與遠程的機器交互,但 SOAP 則更加強健和靈活。
Web 服務體系結構
在 Web 服務領域共有三個組件:
服務提供者
提供服務及維護注冊表以使服務可用。
服務代理
為服務提供交換場所。服務代理充當服務提供者與服務請求者之間的中介。
服務請求者
與服務代理一起發現 Web 服務,然後調用這些服務以創建應用程序。
有三個 Web 服務操作:
發布/撤除發布
發布和撤除發布是指將服務發布至注冊表(發布)或除去它們的一些項(撤除發布)。服務提供者聯系服務代理來發布或不發布某個服務。
查找
查找操作由服務請求者和服務代理共同完成。服務請求者描述他們正在尋找的服務類型,而服務代理發布與請求最匹配的結果。
綁定
綁定操作發生在服務請求者和服務提供者之間。雙方經過適當的商討之後,請求者就可以訪問和調用提供者所提供的服務。
Web 服務實現技術
對象界面描述: WSDL
如果我們打算發布所有的 Web 服務,就需要有個描述它們的通用語言。如果我正提供一個服務,就需要將其描述給其他人,如果我想使用一個服務,就需要將我所尋找的服務描述出來。WSDL 就是基於此目的設計出來的。
對象訪問: SOAP
SOAP 提供一套標記來表示在 Web 上使用 HTTP 傳輸協議(從 SOAP 1.1 以來,SMTP 也可以) 發送的不同信息塊的作用。但是,SOAP 向您提供的能力遠遠強於Html。 使用 SOAP,您的程序向 SOAP 服務器發送“SOAP 請求”(一個簡短的 XML 文檔,描述在遠程機器上要調用的方法和所有要傳遞給它的參數)。 SOAP 服務器將嘗試用那些參數執行該方法,並將 SOAP 響應發回程序。響應可以是執行的結果,也可以是相應的錯誤消息。
對象界面發現: UDDI
UDDI是用於 Web 服務注冊信息的規范。正如我們已經討論過的,發布後的Web 服務是可以相互被發現的;通過在UDDI的發布服務器中注冊Web服務的信息,Web服務的請求者和代理可通過這個發布服務器找到它們所需要的服務。在發布服務器中,業務邏輯和服務都是以通用的XML 格式描述的。在這些 XML 中的結構數據很容易進行搜索、分析和處理。
對象實現: EJB, COM+, CORBA以及任何可用於對象實現的技術
SOAP 結構
SOAP為在一個松散的、分布的環境中使用XML對等地交換結構化的和類型化的信息提供了一個簡單且輕量級的機制SOAP envelope (SOAP信封)
SOAP encoding rules (SOAP編碼規則)
SOAP RPC representation (SOAP RPC表示)
SOAP binding (SOAP綁定)
Request/Response Message
Request 調用遠端對象的某個方法
Response 返回該方法運行後的輸出結果
SOAP Message 結構
SOAP 定義了一個“envelope”對象使用“envelope”包裝消息,自身消息可以采用自身特定的XML詞匯使用namespace來區分彼此。
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,發出計算機設備訂貨傳真。</alert:msg>
</alert:alert>
</env:Body>
</env:Envelope>
Web Services Description Language(WSDL)
使用XML進行描述類似IDL, 不過是使用XML格式
描述了服務的操縱信息
Service Interface
Implementation Details
Access Protocol
Contact Endpoint
WSDL是早先技術的綜合
IBM's NASSL
Microsoft's SDL
WSDL Elements
types: 描述將會使用的數據類型
message: 定義傳入傳出的消息格式
portType: 定義了一個入口的類型(使用了怎樣的request/response消息對)
binding: 確定portType將會使用何種傳輸協議(SOAP/HTTP-POST/…)
port: 定義了一個關聯某個binding的服務入口
service: 一組port組成的Web Service
Universal Description, Discovery and Integration(UDDI)
UDDI 注冊中心包含了通過程序手段可以訪問到的對企業和企業支持的服務所做的描述。此外,還包含對 Web 服務所支持的因行業而異的規范、分類法定義(用於對於企業和服務很重要的類別)以及標識系統(用於對於企業很重要的標識)的引用。UDDI 提供了一種編程模型和模式,它定義與注冊中心通信的規則。UDDI 規范中所有 API 都用 XML 來定義,包裝在 SOAP 信封中,在 HTTP 上傳輸。
UDDI 消息的傳輸,通過 HTTP 從客戶機的 SOAP 請求傳到注冊中心節點,然後再反向傳輸。注冊中心服務器的 SOAP 服務器接收 UDDI SOAP 消息、進行處理,然後把 SOAP 響應返回給客戶機。就注冊中心條例而言,客戶機發出的要修改數據的請求必須確保是安全的、經過驗證的事務。