1. 程式人生 > >Web Service與restful比較

Web Service與restful比較

一、web Service 

   1、WebService是什麼

     web service是一種跨程式語言和跨作業系統平臺的遠端呼叫技術, 所謂跨程式語言和跨操作平臺,就是說服務端程式採用java編寫,客戶端程式則可以採用其他程式語言編寫,反之亦然!跨作業系統平臺則是指服務端程式和客戶端程式可以在不同的作業系統上執行。

   2、WebService 組成

    XML+XSD,SOAP和WSDL就是構成WebService平臺的三大技術。

    1) XML

:WebService採用HTTP協議傳輸資料,採用XML格式封裝資料(即XML中說明呼叫遠端服務物件的哪個方法,傳遞的引數是什麼,以及服務物件的 返回結果是什麼)。XML是WebService平臺中表示資料的格式。除了易於建立和易於分析外,XML主要的優點在於它既是平臺無關的,又是廠商無關 的。無關性是比技術優越性更重要的:軟體廠商是不會選擇一個由競爭對手所發明的技術的。 

    2) XSD:XML解決了資料表示的問題,但它沒有定義一套標準的資料型別,更沒有說怎麼去擴充套件這套資料型別。例如,整形數到底代表什麼?16位,32位,64位?這 些細節對實現互操作性很重要。XML Schema(XSD)就是專門解決這個問題的一套標準。它定義了一套標準的資料型別,並給出了一種語言來擴充套件這套資料型別。WebService平臺就 是用XSD來作為其資料型別系統的。當你用某種語言(如VB.NET或C#)來構造一個Web service時,為了符合WebService標準,所 有你使用的資料型別都必須被轉換為XSD型別。你用的工具可能已經自動幫你完成了這個轉換,但你很可能會根據你的需要修改一下轉換過程。

  3) SOAP:SOAP協議 = HTTP協議 + XML資料格式,WebService通過HTTP協議傳送請求和接收結果時,傳送的請求內容和結果內容都採用XML格式封裝,並增加了一些特定的HTTP訊息頭,以說明 HTTP訊息的內容格式,這些特定的HTTP訊息頭和XML內容格式就是SOAP協議。

  4)WSDL:WSDL(Web Services Description Language)就是這樣一個基於XML的語言,用於描述Web Service及其函式、引數和返回值,相當於是服務的描述圖譜。

一、RestFul

      1、RestFul 是什麼

       REST其實並不是什麼協議也不是什麼標準,而是將Http協議的設計初衷作了詮釋,在Http協議被廣泛利用的今天,越來越多的是將其作為傳輸協議,而非原先設計者所考慮的應用協議。

         REST專門針對網路應用設計和開發方式,以降低開發的複雜性,提高系統的可伸縮性。REST提出設計概念和準則為:
  1). 網路上的所有事物都可以被抽象為資源(resource)
  2). 每一個資源都有唯一的資源標識(resource identifier),對資源的操作不會改變這些標識
  3). 所有的操作都是無狀態的
  REST簡化開發,其架構遵循CRUD原則,該原則告訴我們對於資源(包括網路資源)只需要四種行為:建立,獲取,更新和刪除就可以完成相關的操作和處理。我們可以通過統一資源識別符號(Universal Resource Identifier,URI)來識別和定位資源,並且針對這些資源而執行的操作是通過 HTTP 規範定義的。其核心操作只有GET,PUT,POST,DELETE。由於REST強制所有的操作都必須是stateless的,這就沒有上下文的約束,如果做分散式,叢集都不需要考慮上下文和會話保持的問題。極大的提高系統的可伸縮性。

 

​​​​​​​三、RestFul 與  web Service

      1、技術架構對比

        二話不說先上圖  ,首先它倆都是WebService伺服器(web服務),區別是,一種是基於http協議和json資料格式,一種是基於soap協議(基礎也是Http協議,增加了一些特定的HTTP訊息頭)和xml資料格式。

 

  1、技術選型

       如果有嚴格的規範和標準定義要求,而且前期規範標準需要指導多個業務系統整合和開發的時候,SOAP風格由於有清晰的規範標準定義是明顯有優勢的。我們可以在開始和實現之前就嚴格定義相關的介面方法和介面傳輸資料。(很多情況下是為了相容以前專案且前臺呼叫邏輯程式碼都不能動的前提下,更改底層應用,一般就需要使用webService模式開發,因為老程式碼中已經有了明確的方法定義以及引數型別、個數等申明)
  簡單資料操作,無事務處理,開發和呼叫簡單這些是使用REST架構風格的優勢。而對於較為複雜的面向活動的服務,如果我們還是使用REST,很多時候都是仍然是傳統的面向活動的思想通過轉換工具再轉換得到REST服務,這種使用方式是沒有意義的。

      圈重點:選擇SOAP Webservice和Restful Webservice的使用,首先需要理解就是SOAP偏向於面向活動,有嚴格的規範和標準,包括安全,事務等各個方面的內容,同時SOAP強調操作方法和操作物件的分離,有WSDL檔案規範和XSD檔案分別對其定義。而REST強調面向資源,只要我們要操作的物件可以抽象為資源即可以使用REST架構風格。

    

    

   

參考文章:https://segmentfault.com/a/1190000008770926https://www.cnblogs.com/zhuyiqizhi/p/6213502.htm、 https://www.cnblogs.com/xdp-gacl/p/4048937.html