restful是一種架構風格,其核心是面向資源,更簡單;而webService底層SOAP協議,主要核心是面向活動;兩個都是通過web請求調用接口
RESTful是什么:
首先要了解什么是REST,REST就是(REpresentational State Transfer單詞太長記不住就對了)是一種構架風格,REST指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或者設計就是RESTful,核心就是面向資源,REST專門針對網絡應用設計和開發方式,以降低開發的復雜性,提高系統的可伸縮性,為什么這么說,因為RESTful是無狀態的,無狀態是指任意一個web請求必須完全與其他請求隔離,是獨立的,當請求端提出請求時,請求本身包含了這一請求的全部信息,這個約束提高系統的可伸縮性,可見性,可靠性。無狀態優勢就是在調用接口,操作資源的時候,可以不考慮上下文,不用考慮當前狀態,降低復雜度。
REST專門針對網絡應用設計和開發方式,以降低開發的復雜性,提高系統的可伸縮性。REST提出設計概念和准則為:
1. 網絡上的所有事物都可以被抽象為資源(resource)
2. 每一個資源都有唯一的資源標識(resource identifier),對資源的操作不會改變這些標識
3. 所有的操作都是無狀態的
REST簡化開發,其架構遵循CRUD原則,該原則告訴我們對於資源(包括網絡資源)只需要四種行為:創建,獲取,更新和刪除就可以完成相關的操作和處理。我們可以通過統一資源標識符(Universal Resource Identifier,URI)來識別和定位資源,並且針對這些資源而執行的操作是通過 HTTP 規范定義的。其核心操作只有GET,PUT,POST,DELETE。由於REST強制所有的操作都必須是stateless的,這就沒有上下文的約束,如果做分布式,集群都不需要考慮上下文和會話保持的問題。極大的提高系統的可伸縮性。
WebService是什么:
WebService就是一個應用程序,它向外界暴露出一個能夠通過Web進行調用的API。也就是說,你可以通過編程的方法通過Web來調用這個應用程序。它可以跨編程語言,跨操作系統平台的這么一個遠程調用技術,采用SOAP(面向對象訪問協議)協議傳輸。
Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:通過SOAP在Web上提供的軟件服務,使用WSDL文件進行說明,並通過UDDI進行注冊。
XML:(Extensible Markup Language)擴展型可標記語言。面向短期的臨時數據處理、面向萬維網絡,是Soap的基礎。
Soap:(Simple Object Access Protocol)簡單對象存取協議。是XML Web Service 的通信協議。當用戶通過UDDI找到你的WSDL描述文檔后,他通過可以SOAP調用你建立的Web服務中的一個或多個操作。SOAP是XML文檔形式的調用方法的規范,它可以支持不同的底層接口,像HTTP(S)或者SMTP。
WSDL:(Web Services Description Language) WSDL 文件是一個 XML 文檔,用於說明一組 SOAP 消息以及如何交換這些消息。大多數情況下由軟件自動生成和使用。
UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新項目。在用戶能夠調用Web服務之前,必須確定這個服務內包含哪些商務方法,找到被調用的接口定義,還要在服務端來編制軟件,UDDI是一種根據描述文檔來引導系統查找相應服務的機制。UDDI利用SOAP消息機制(標准的XML/HTTP)來發布,編輯,瀏覽以及查找注冊信息。它采用XML格式來封裝各種不同類型的數據,並且發送到注冊中心或者由注冊中心來返回需要的數據。
二、調用原理

實現一個完整的Web服務包括以下步驟:
◆ Web服務提供者設計實現Web服務,並將調試正確后的Web服務通過Web服務中介者發布,並在UDDI注冊中心注冊; (發布)
◆ Web服務請求者向Web服務中介者請求特定的服務,中介者根據請求查詢UDDI注冊中心,為請求者尋找滿足請求的服務; (發現)
◆ Web服務中介者向Web服務請求者返回滿足條件的Web服務描述信息,該描述信息用WSDL寫成,各種支持Web服務的機器都能閱讀;(發現)
◆ 利用從Web服務中介者返回的描述信息生成相應的SOAP消息,發送給Web服務提供者,以實現Web服務的調用;(綁定)
◆ Web服務提供者按SOAP消息執行相應的Web服務,並將服務結果返回給Web服務請求者。(綁定)
RESTful跟WebService的區別:
上面所述,REST是一種架構風格,其核心是面向資源,遵循CRUD原則,這個原則告訴我們對於資源只需要4種行為,分別是:創建,獲取,更新和刪除,並且這些資源執行的操作時通過HTTP協議規定的,而WebService底層是SOAP協議,核心是面向活動,有嚴格的規范和標准,包括安全,事務等方面。
那么我們是使用RESTful還是WebService就需要考慮資源本身的 ,看資源本身是那種簡單的類似增刪改查的業務操作,還是那種比較復雜,如轉賬,事務處理等。其次是看是否有嚴格的規范和標准的,而且有多個業務系統集成和開發的時候,我們使用SOAP協議就比較優勢,如果是簡單的數據操作,無事務處理,開發和調用比較簡單的話使用REST架構風格比較有優勢,較為復雜的面向活動的服務,我們使用REST意義不大。
