在網絡飛速發展的今天
每個組織都面臨著同樣一個挑戰
在平衡核心能力和已有應用程序時創建同構的環境
IT需要一個簡單的
與平台無關的應用程序間通信方式
在這種需求下產生了Web服務
它是一類可以從Internet上獲取的服務的總稱
它使用標准的XML消息接發系統
並且不受任何操作系統和編程語言的約束
在過去的三年中
出現了三種作為全球標准的主要技術
SOAP
WSDL和UDDI
它們構成了今天Web服務技術的核心
然而所有Web服務協議和新技術都是以XML作為其數據表示層的
XML消除了協議特有的網絡
操作系統以及平台綁定限制
因此XML是所有Web服務的基礎
XML (Extensible Markup Language) XML
HTML的誕生使得Web發布變得非常簡單
但是HTML存在很大的局限性
由於標准的標記已經由W
C預先確定
所以在描述復雜文檔時HTML就顯得力不從心
並且HTML是面向描述的
而非面向對象的
因此HTML不會給出內容的含義
為了解決這些問題
W
C開始尋找答案
這就是XML
XML是可擴展的
我們可以創建自定義元素以滿足創作的需要
XML同時也是可結構化的
我們可以檢查XML文檔的語法
從而避免大量錯誤的XML文檔在Internet上流傳
這便是DTD
DTD
DTD(文檔類型定義)可以看作是標記語言的語法文件
它是一套定義XML標記如何使用的規則
DTD定義了元素
元素的屬性和取值
以及哪個元素可以被包含在另一個元素中的說明
DTD還可以定義實體
XML解析器可以使用DTD文件來解析XML文檔
DTD使得我們能夠發布文檔以供其他人共享
一個擁有DTD參考文件的XML文檔稱為一個有效的XML文檔
然而由於XML DTD並不能完全滿足XML自動化處理的要求
例如不能很好實現應用程序不同模塊間的相互協調
缺乏對文檔結構
屬性
數據類型等約束的足夠描述等等
所以W
C於
年
月正式推薦XML Schema為XML 的標准模式
顯然
W
C希望以XML Schema來作為XML模式描述語言的主流
並逐漸代替XML DTD
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文檔以同樣的方式存儲在一起
方便管理
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可能是最合適的最低標准
SOAP(Simple Object Access Protocol) SOAP
SOAP是一種基於XML的
用於計算機之間交換信息的協議
SOAP能應用於各種消息接發系統
並能通過各種傳輸協議進行傳遞
但最初的側重點是通過HTTP傳輸的遠程過程調用
因此
SOAP能使客戶應用程序很容易地連接遠程服務並調用遠程方法
SOAP規范主要定義了四個元素
SOAP信封規范
傳輸和協議綁定
編碼規則和一個RPC協定
SOAP信封規范
SOAP信封規范對計算機間傳遞的數據如何封裝定義了具體的規則
這包括應用特定的數據
如要調用的方法名
方法參數和返回值
還包括誰將處理封裝內容
失敗時如何編碼錯誤消息等信息
數據編碼規則
為了交換數據
計算機必須在編碼特定數據類型的規則上達成一致
SOAP也有自己的一套編碼數據類型的約定
大部分約定都基於W
C XML Schema規范
RPC協定
SOAP能用於單向和雙向等各種消息接發系統
SOAP為雙向消息接發定義了一個簡單的協定來進行遠程過程調用和響應
這使得客戶端應用可以指定遠程方法名
獲取任意多個參數並接受來自服務器的響應
傳輸和協議綁定
提供了更底層協議傳輸SOAP封套的一套通用機制
源自客戶端的請求或來自服務器的響應是一個單向消息
稱為SOAP消息
每個消息都有一個強制性的Envelope元素
一個可選的Header元素和一個強制性的Body元素
SOAP請求必須包括要調用的方法名和所有必須的參數
其次還需要定義若干個命名空間
用於區分XML元素和屬性
或用於引用外部模式
SOAP響應與SOAP請求相類似
XML和SOAP能夠很好的描述數據
但許多應用程序的數據並不適合用XML來描述
比如圖像的二進制數據
這時候就需要SWA(Soap With Attachments)來解決問題
SWA將SOAP協議和MIME格式組合在一起
從而使SOAP消息中可以包含任意想要的數據
SOAP
RPC
SOAP
RPC使用SOAP底層結構定義了一個用來表示RPC以及RPC響應的模型
它並不要求一定要緊緊綁定一個同步的請求/響應模型或者一個HTTP協議
實際上SOAP
RPC的使用和協議的綁定是無關的
因此重要的是SOAP定義了一個統一的模型
來表示RPC及其一個或多個返回值
SOAP還提供了對方法簽名
頭數據和代表目的地的URI進行編碼的方法
所以SOAP
RPC比XML
RPC更加復雜
功能也更加強大
WSDL(Web Services Description Language) WSDL是一種將Web服務描述為一系列訪問端點的XML文法
這些端點具有以面向過程或者面向文檔的方式交換信息的能力
WSDL描述了四種關鍵的數據
描述所有公用函數的接口信息
所有消息請求和消息響應的數據類型消息
所使用的傳輸協議的綁定信息
用來定位指定服務的地址信息
總之
WSDL在服務請求者和服務提供者之間提供了一個協議
主要用於描述SOAP服務
WSDL本身使用的是XML語法
可以分為六個主要的元素
definitions
必須是所有WSDL文檔的根元素
它定義了Web服務的名稱
聲明文檔其他部分使用的多個名稱空間
並包含所有服務元素
types
描述在客戶端和服務器之間使用的所有數據類型
message
描述一個單向信息
定義消息的名稱
可以包含零個或多個的引用消息參數或消息返回值的消息part元素
portType
結合多個message元素
形成一個完美的單向或往返操作
binding
描述了在Internet上實現服務的具體細節
service
用於定義調用指定服務的地址
一般包含調用SOAP服務的URL
UDDI(Universal Description Discovery and Integration) UDDI是一個描述
發現和連接Web服務的技術規范
有了UDDI
公司不但可以發布Web服務
還能查找Web服務
UDDI的核心由兩部分組成
第一
UDDI是一個建立業務和Web服務的分布式目錄的技術規范
數據存儲在特定的XML格式中
UDDI規范包括搜索已有數據和發布新數據的API細節
第二
UDDI業務注冊中心是UDDI規范的一個完全操作實現
UDDI的技術體系結構由三部分組成
UDDI數據模型
一個描述業務和Web服務的XML Schema
UDDI API
一個用於搜索和發布UDDI數據的
基於SOAP的API
UDDI 服務群
一個提供UDDI規范實現的根據預定基礎使所與數據同步的操作入口站點
綜上所述
以上的後三種技術以及傳輸協定組成了一個完整的Web服務的四個層面
自上而下分別為
發現 —— UDDI
描述 —— WSDL
XML消息接發 —— XML
RPC
SOAP
XML
傳輸 —— HTTP
SMTP
FTP
BEEP
這些技術使得Web服務實現了 基於XML
松散耦合
粗粒度
同步或異步能力
支持遠程過程調用和支持文檔交換等特性
從而讓Web服務得到了更廣泛的應用
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25442.html