SOAP WebService和RestFul 的區別
一、WebService涉及的相關概念:
1、Soap:簡單物件訪問協議(Simple Object Access Protocol,SOAP)是一種基於 XML 的協議,由Dave Winer, Don Box,Bob Atkinson, Mohsen Al-Ghosein於1998年設計,當時只作為一種物件訪問協議。現在SOAP採用了已經廣泛使用的兩個協議:HTTP 和XML(標準通用標記語言下的一個子集)。HTTP用於實現 SOAP 的RPC 風格的傳輸, 而XML 是它的編碼模式。採用幾行程式碼和一個XML 解析器, HTTP 伺服器( MS 的 IIS 或 Apache) 立刻成為SOAP 的 ORBS。SOAP 通訊協議使用 HTTP 來發送XML 格式的資訊。
2、WSDL:WSDL ((Web Services Description Language)是基於 XML 的用於描述 Web Services 以及如何訪問 Web Services 的語言,就是用機器能閱讀的方式提供的一個正式描述文件而基於XML(標準通用標記語言下的一個子集)的語言,用於描述Web Service及其函式、引數和返回值。因為是基於XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的。WSDL 文件的主要結構是類似這樣的:
<definitions> <types> definition of types........ </types> <message> definition of a message.... </message> <portType> definition of a port....... </portType> <binding> definition of a binding.... </binding> </definitions>
3、UDDI:UDDI(Universal Description, Discovery and Integration),可譯為“通用描述、發現與整合服務”。 目的是為電子商務建立標準;UDDI是一套基於Web的、分散式的、為Web Service提供的、資訊註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的Web Service註冊,以使別的企業能夠發現的訪問協議的實現標準。
W3school定義:
- UDDI 指的是通用描述、發現與整合服務
- UDDI 是一種用於儲存有關 web services 的資訊的目錄。
- UDDI 是一種由 WSDL 描述的 web services 介面的目錄。
- UDDI 經由 SOAP 進行通訊
- UDDI 被構建入了微軟的 .NET 平臺
上面講了WebService的三要素,下面我們給出WebService定義:從表面上看,Web service 就是一個應用程式,它向外界暴露出一個能夠通過Web進行呼叫的API,能使得執行在不同機器上的不同應用無須藉助附加的、專門的第三方軟體或硬體, 就可相互交換資料或整合。
二、RestFul,REST(Representational State Transfer,表述性狀態轉移) 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程式或設計就是 RESTful。Web 應用程式最重要的 REST 原則是,客戶端和伺服器之間的互動在請求之間是無狀態的。從客戶端到伺服器的每個請求都必須包含理解請求所必需的資訊。如果伺服器在請求之間的任何時間點重啟,客戶端不會得到通知。
RESTful 架構的核心規範:
1. 網路上的所有事物都可以被抽象為資源(resource)
2. 每一個資源都有唯一的資源標識(resource identifier),對資源的操作不會改變這些標識
3. 所有的操作都是無狀態的
比較:
1、
SOAP由於各種需求不斷擴充其本身協議的內容,導致在SOAP處理方面的效能有所下降。同時在易用性方面以及學習成本上也有所增加。
RESTful由於其面向資源介面設計以及操作抽象簡化了開發者的不良設計,同時也最大限度的利用了http最初的應用協議設計理念。
2、
RESTful對於資源型服務介面來說很合適,同時特別適合對效率要求很高,但是對於安全要求不高的場景。
SOAP的成熟性可以給需要提供給多開發語言,對於安全性要求較高的介面設計帶來便利。所以我覺得純粹說什麼設計模式將會佔據主導地位沒有什麼意義,關鍵還是看應用場景。