Web服務

Web服務是一種服務導向架構的技術,經過標準的Web協議提供服務,目的是保證不一樣平臺的應用服務能夠互操做。php

根據W3C的定義,Web服務(Web  service)應當是一個軟件系統,用以支持網絡間不一樣機器的互動操做。網絡服務一般是許多應用程序接口API)所組成的,它們透過網絡,例如國際互聯網(Internet)的遠程服務器端,執行客戶所提交服務的請求。web

儘管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英語OASIS (organization))負責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定義了聯絡服務的必要內容。

表述性狀態轉移[編輯]

主條目:REST

表述性狀態轉移式(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做爲這樣一種中間件系統就獲得了普遍部署。CORBADCOM則更加雄心壯志,二者都嘗試將做用域波及到分佈式對象,這一點也爲WEB服務所模仿。

這些相似方式每每藉助於XML-RPC和HTTP自己,而不依靠SOAP封裝參數。

外部連接[編輯]

參見[編輯]

取自「http://zh.wikipedia.org/w/index.php?title=Web服務&oldid=34099523」    分類

相關文章
相關標籤/搜索