Web服務
Web服務是一種服務導向架構的技術,通過標準的Web協議提供服務,目的是保證不同平台的應用服務可以互操作。
根據W3C的定義,Web服務(Web service)應當是一個軟件系統,用以支持網絡間不同機器的互動操作。網絡服務通常是許多應用程序接口(API)所組成的,它們透過網絡,例如國際互聯網(Internet)的遠程服務器端,執行客戶所提交服務的請求。
儘管W3C的定義涵蓋諸多相異且無法介分的系統,不過通常我們指有關於主從式架構(Client-server)之間根據SOAP協議進行傳遞XML格式消息。無論定義還是實現,Web服務過程中會由伺服機提供一個機器可讀的描述(通常基於WSDL)以辨識伺服機所提供的WEB服務。另外,雖然WSDL不是SOAP服務端點的必要條件,但目前基於Java的主流Web服務開發框架往往需要WSDL實現客戶端的源代碼生成。一些工業標準化組織,比如WS-I,就在Web服務定義中強制包含SOAP和WSDL。
定義
編輯核心定義
編輯考慮到並沒某個獨立文檔包含一切相關內容,可採用模塊化的方式給出對Web服務的描述,但不能給出一個「絕對全面和準確」的定義。受外部環境和實現技術影響,各方給出的核心定義可能稍有出入,但通常包括:
- WSDL
- 一個XML格式文檔,用以描述服務端口訪問方式和使用協議的細節。通常用來輔助生成服務器和客戶端代碼及配置信息。
- UDDI
- 一個用來發布和搜索WEB服務的協議,應用程序可藉由此協議在設計或運行時找到目標WEB服務。
這些標準由這些組織制訂:W3C負責XML、SOAP及WSDL;OASIS負責UDDI。
協議集
編輯為提高Web服務間的互操作能力,WS-I還特別發布了WEB服務協議集(Profile)。協議集包含了一系列特定版本的核心定義(諸如SOAP和WSDL),以及對其使用上的限制與約束。WS-I還發布了用於部署協議集兼容WEB服務的測試工具及相關用例。
WS-系列追加定義
編輯為擴展WEB服務能力,一些新的標準已經或正在被開發。這些標準通常被冠以WS字頭(Web Service的簡稱),以下是一個WS系列追加標準的不完全列表:
- WS安全(WS-Security)
- 定義了如何在SOAP中使用XML加密或XML簽名來保護消息傳遞。可作為HTTPS保護的一種替代或擴充。
- WS信賴性(WS-Reliability)
- 一個來自OASIS的標準協議,用來提供可信賴的WEB服務間消息傳遞。
- WS可信賴消息(WS-ReliableMessaging)
- 同樣是一個提供信賴消息的協議,由Microsoft, BEA 和IBM發布。目前OASIS正對其實施標準化工作。
- WS尋址(WS-Addressing)
- 定義了在SOAP消息內描述發送/接收方地址的方式。
- WS事務(WS-Transaction)
- 定義事務處理方式。
一直以來,W3C負責制定了不少WS追加定義,但近來此舉開始受到懷疑。一些人呼籲W3C作為網絡和語義網構建者應當把精力放在核心網絡本身,而不是為Web服務改換版本。特別是2007年2月的企業級Web服務論壇上,對W3C不再充當WEB服務定義者的訴求開始表面化。 此外,OASIS對Web服務擴展實施了許多標準化工作。包括Web服務資源框架以及WSDM。
使用Web服務的方式
編輯Web服務實際上是一組工具,並有多種不同的方法調用之。三種最普遍的手段是:遠程過程調用(RPC),服務導向架構(SOA)以及表述性狀態轉移(REST)。
遠程過程調用
編輯Web服務提供一個分布式函數或方法接口供用戶調用,這是一種比較傳統的方式。通常,在WSDL中對RPC接口進行定義(類似於早期的XML-RPC)。
儘管最初的Web服務廣泛採用RPC方式部署,但針對其過於緊密之耦合性的批評聲也隨之不斷。這是因為RPC式WEB服務實質上是利用一個簡單的映射,以把用戶請求直接轉化成為一個特定語言編寫的函數或方法。如今,多數服務提供商認定此種方式在未來將難有作為,在他們的推動下,WS-I基本協議集(WS-I Basic Profile)已不再支持遠程過程調用。
服務導向架構
編輯現在,業界比較關注的是遵從服務導向架構(Service-oriented architecture,SOA)概念來構築WEB服務。在服務導向架構中,通訊由消息驅動,而不再是某個動作(方法調用)。這種WEB服務也被稱作面向消息的服務。
SOA式WEB服務得到了大部分主要軟件供應商以及業界專家的支持和肯定。作為與RPC方式的最大差別,SOA方式更加關注如何去連接服務而不是去特定某個實現的細節。WSDL定義了聯絡服務的必要內容。
表述性狀態轉移
編輯表述性狀態轉移式(Representational state transfer,REST)Web服務類似於HTTP或其他類似協議,它們把接口限定在一組廣為人知的標準動作中(比如HTTP的GET、PUT、DELETE)以供調用。此類WEB服務關注與那些穩定的資源的互動,而不是消息或動作。
此種服務可以通過WSDL來描述SOAP消息內容,通過HTTP限定動作接口;或者完全在SOAP中對動作進行抽象。
批評
編輯一些人抱怨,Web服務(「表現層狀態轉換」除外)過於複雜,認為它太過於偏重那些大型軟件開發商,而不利於開源項目。但是至今不少開發工具已經具備自動化產生具象物件,已經減少web服務的調用難度。例如Microsoft Visual Studio、Eclipse等等整合開發環境(IDE)工具。使用者只需要專注於調用與實行。
Web服務的性能也時常是人們關注的一個問題。由於使用XML作為消息格式,並以SOAP封裝,由HTTP傳輸,Web服務始終處於較高的開銷狀態。不過目前一些新興技術正在試圖解決此一問題,諸如新的XML處理模型致力於解決XML這一部分的性能。
類似方式
編輯無論是在Web服務出現以前,還是現在,一直不斷有各種同類技術問世。比如,RMI作為這樣一種中間件系統就得到了廣泛部署。CORBA和DCOM則更加雄心壯志,兩者都嘗試將作用域波及到分布式對象,這一點也為Web服務所模仿。
這些類似方式往往藉助於XML-RPC和HTTP本身,而不依靠SOAP封裝參數。
參考文獻
編輯外部連結
編輯- W3C Web Services Activity home page (頁面存檔備份,存於網際網路檔案館)
- Web Services Architecture (頁面存檔備份,存於網際網路檔案館) (W3C Working Group Note)
- Secure, Reliable, Transacted Web Services (頁面存檔備份,存於網際網路檔案館)(IBM/Microsoft白皮書)
- XMethods - Collection of public Web Services你好