Web 服務簡介
在網絡飛速發展的今天,每個組織都面臨著同樣一個挑戰:在平衡核心能力和已有應用程序時創建同構的環境。IT需要一個簡單的,與平臺無關的應用程序間通信方式。在這種需求下產生了Web服務,它是一類可以從Internet上獲取的服務的總稱,它使用標準的XML消息接發系統,并且不受任何操作系統和編程語言的約束。在過去的三年中,出現了三種作為全球標準的主要技術:SOAP,WSDL和UDDI。它們構成了今天Web服務技術的核心。然而所有Web服務協議和新技術都是以XML作為其數據表示層的,XML消除了協議特有的網絡,操作系統以及平臺綁定限制,因此XML是所有Web服務的基礎。
1. XML (Extensible Markup Language)
1.1 XML
HTML的誕生使得Web發布變得非常簡單,但是HTML存在很大的局限性,由于標準的標記已經由W3C預先確定,所以在描述復雜文檔時HTML就顯得力不從心。并且HTML是面向描述的,而非面向對象的,因此HTML不會給出內容的含義。為了解決這些問題,W3C開始尋找答案,這就是XML。
XML是可擴展的,我們可以創建自定義元素以滿足創作的需要。XML同時也是可結構化的。我們可以檢查XML文檔的語法,從而避免大量錯誤的XML文檔在Internet上流傳。這便是DTD。
1.2 DTD
DTD(文檔類型定義)可以看作是標記語言的語法文件,它是一套定義XML標記如何使用的規則,DTD定義了元素,元素的屬性和取值,以及哪個元素可以被包含在另一個元素中的說明。DTD還可以定義實體。XML解析器可以使用DTD文件來解析XML文檔。DTD使得我們能夠發布文檔以供其他人共享。一個擁有DTD參考文件的XML文檔稱為一個有效的XML文檔。
然而由于XML DTD并不能完全滿足XML自動化處理的要求,例如不能很好實現應用程序不同模塊間的相互協調,缺乏對文檔結構、屬性、數據類型等約束的足夠描述等等,所以W3C于2001年5月正式推薦XML Schema為XML 的標準模式。顯然,W3C希望以XML Schema來作為XML模式描述語言的主流,并逐漸代替XML DTD。
1.3 XML Schema
XML Schema與XML DTD有很大的區別。XML Schema事實上是XML的一種應用,也就是說XML Schema的格式與XML的格式是完全相同的,而作為SGML DTD的一個子集,XML DTD具有著與XML格式完全不同的格式。這種區別給XML Schema的使用帶來了很多好處。如:XML語法分析器可以直接的應用到XML Schema,而不需要修改。另外作為XML的一個應用,XML Schema理所當然的繼承了XML的自描述性和可擴展性,這使得XML Schema 更具有可讀性和靈活性。同時由于格式完全與XML一樣,XML Schema除了可以像XML一樣處理外,也可以同它所描述的XML文檔以同樣的方式存儲在一起,方便管理。
1.4 DOM
另外,為了更好的訪問XML文檔,我們需要用到文檔對象模型DOM(Document Object Model),DOM事實上就是采用樹狀對象集合的方式訪問給定文檔內容的抽象規范。DOM對象庫可以讓我們在內存中構建XML語法樹,從而提供了更有效的方法來增加文檔、定位文檔結構、填加,修改和刪除文檔元素。
有了以上這些規范,XML已經為我們在網絡上傳輸數據提供了一個規范的結構。XML-RPC技術就為通過網絡的方法或函數調用提供了基于XML和HTTP的機制。XML-RPC允許程序通過網絡調用函數或過程。它只用了很少的XML詞匯描述請求和響應的屬性,用HTTP協議將信息從客戶端傳遞給服務器。客戶端在XML請求中指定過程名和參數,服務器在XML響應中返回一個錯誤或響應。當然對于普遍運用對象的編程領域,XML-RPC對于許多應用程序來說似乎太受限制了。但當我們需要集成不同類型的系統時,XML-RPC固有的簡潔性優勢便能體現出來。在我們建立公共服務時,可以用XML-RPC來定義接口,并且選擇一種語言來實現它,這樣一旦服務在Web上發布,任何具有XML-RPC能力的客戶端就能連上它。而且在建立分布式系統時,也可以用XML-RPC作為粘貼碼來連接內部網絡中的不同部分。因此,雖然XML-RPC很簡單,但簡單的工具有創造力的應用可以構建復雜而功能強大的體系結構。當各種各樣的系統需要通信時,XML-RPC可能是最合適的最低標準。
2. SOAP(Simple Object Access Protocol)
2.1 SOAP
SOAP是一種基于XML的,用于計算機之間交換信息的協議。SOAP能應用于各種消息接發系統,并能通過各種傳輸協議進行傳遞,但最初的側重點是通過HTTP傳輸的遠程過程調用。因此,SOAP能使客戶應用程序和容易的連接遠程服務并調用遠程方法。
SOAP規范主要定義了四個元素:SOAP信封規范,傳輸和協議綁定,編碼規則和一個RPC協定。
n SOAP信封規范,SOAP信封規范對計算機間傳遞的數據如何封裝定義了具體的規則。這包括應用特定的數據,如要調用的方法名,方法參數和返回值;還包括誰將處理封裝內容,失敗時如何編碼錯誤消息等信息。
n 數據編碼規則,為了交換數據,計算機必須在編碼特定數據類型的規則上達成一致,SOAP也有自己的一套編碼數據類型的約定。大部分約定都基于W3C XML Schema規范。
n RPC協定,SOAP能用于單向和雙向等各種消息接發系統。SOAP為雙向消息接發定義了一個簡單的協定來進行遠程過程調用和響應,這使得客戶端應用可以指定遠程方法名,獲取任意多個參數并接受來自服務器的響應。
n 傳輸和協議綁定,提供了更底層協議傳輸SOAP封套的一套通用機制。
源自客戶端的請求或來自服務器的響應是一個單向消息,稱為SOAP消息。每個消息都有一個強制性的Envelope元素,一個可選的Header元素和一個強制性的Body元素。SOAP請求必須包括要調用的方法名和所有必須的參數。其次還需要定義若干個命名空間,用于區分XML元素和屬性,或用于引用外部模式。SOAP響應與SOAP請求相類似。
XML和SOAP能夠很好的描述數據,但許多應用程序的數據并不適合用XML來描述,比如圖像的二進制數據。這時候就需要SWA(Soap With Attachments)來解決問題。SWA將SOAP協議和MIME格式組合在一起,從而使SOAP消息中可以包含任意想要的數據。
2.2 SOAP-RPC
SOAP-RPC使用SOAP底層結構定義了一個用來表示RPC以及RPC響應的模型。它并不要求一定要緊緊綁定一個同步的請求/響應模型或者一個HTTP協議。實際上SOAP-RPC的使用和協議的綁定是無關的。因此重要的是SOAP定義了一個統一的模型,來表示RPC及其一個或多個返回值。SOAP還提供了對方法簽名,頭數據和代表目的地的URI進行編碼的方法。所以SOAP-RPC比XML-RPC更加復雜,功能也更加強大。
3. WSDL(Web Services Description Language)
WSDL是一種將Web服務描述為一系列訪問端點的XML文法,這些端點具有以面向過程或者面向文檔的方式交換信息的能力。WSDL描述了四種關鍵的數據:
n 描述所有公用函數的接口信息。
n 所有消息請求和消息響應的數據類型消息。
n 所使用的傳輸協議的綁定信息。
n 用來定位指定服務的地址信息。
總之,WSDL在服務請求者和服務提供者之間提供了一個協議,主要用于描述SOAP服務。WSDL本身使用的是XML語法,可以分為六個主要的元素:
n definitions :必須是所有WSDL文檔的根元素。它定義了Web服務的名稱,聲明文檔其他部分使用的多個名稱空間,并包含所有服務元素。
n types :描述在客戶端和服務器之間使用的所有數據類型。
n message :描述一個單向信息,定義消息的名稱,可以包含零個或多個的引用消息參數或消息返回值的消息part元素。
n portType : 結合多個message元素,形成一個完美的單向或往返操作。
n binding : 描述了在Internet上實現服務的具體細節。
n service : 用于定義調用指定服務的地址。一般包含調用SOAP服務的URL。
4. UDDI(Universal Description ,Discovery and Integration)
UDDI是一個描述,發現和連接Web服務的技術規范。有了UDDI,公司不但可以發布Web服務,還能查找Web服務。UDDI的核心由兩部分組成。第一,UDDI是一個建立業務和Web服務的分布式目錄的技術規范。數據存儲在特定的XML格式中,UDDI規范包括搜索已有數據和發布新數據的API細節。第二,UDDI業務注冊中心是UDDI規范的一個完全操作實現。
n UDDI的技術體系結構由三部分組成:
n UDDI數據模型 :一個描述業務和Web服務的XML Schema。
n UDDI API :一個用于搜索和發布UDDI數據的,基于SOAP的API。
n UDDI 服務群 :一個提供UDDI規范實現的根據預定基礎使所與數據同步的操作入口站點。
綜上所述,以上的后三種技術以及傳輸協定組成了一個完整的Web服務的四個層面,自上而下分別為:
n 發現 ------------------------------ UDDI
n 描述 ------------------------------ WSDL
n XML消息接發 ----------------------- XML-RPC,SOAP,XML
n 傳輸 ------------------------------- HTTP,SMTP,FTP,BEEP
這些技術使得Web服務實現了 基于XML,松散耦合,粗粒度,同步或異步能力,支持遠程過程調用和支持文檔交換等特性,從而讓Web服務得到了更廣泛的應用。
Author: orangelizq
email: orangelizq@163.com
posted on 2007-09-30 10:00
桔子汁 閱讀(934)
評論(0) 編輯 收藏 所屬分類:
WebService 技術