與 WebServices 相關的 J2EE 技術稱為 JWS(Java WebServices),其中含有 JAX-WS、JAX-RS、JAXB、JAXR、SAAJ、StAX 等技術支持 SOAP 的是 JAX-WS,即 JSR 224,http://jcp.org/en/jsr/detail?i...
與 WebServices 相關的 J2EE 技術稱為 JWS(Java WebServices),其中含有 JAX-WS、JAX-RS、JAXB、JAXR、SAAJ、StAX 等技術
支持 SOAP 的是 JAX-WS,即 JSR 224,http://jcp.org/en/jsr/detail?id=224
支持 REST 的是 JAX-RS,即 JSR 311,http://jcp.org/en/jsr/detail?id=311
soap rest 區別 。。轉載: http://hi.baidu.com/itaolei/item/dd8e5f0fa6f1663bf3eafc99
本文轉載自他人的博客,ArcGIS Server 推出了 對 SOAP 和 REST兩種介面(用介面類型也許並不准確)類型的支持,本文非常清晰的比較了SOAP和Rest的區別聯繫!
REST似乎在一夜間興起了,這可能引起一些爭議,反對者可以說REST是WEB誕生之始甚而是HTTP出現之日就相伴而生的原則。但是毋庸置疑的事實是,在Google和Yahoo等網路巨頭髮布的相同功能的Web Service API中,REST無疑受到更多的青睞,因此是不是可以這樣說:RPC在一夜之間衰落了?
在一篇作業的小文章里討論整套RPC的原理,無疑太過龐大了,況且RPC在Web Service領域的應用也無過XML-RPC以及由此延伸的SOAP而已。在原理上唯一重要的,是傳統程式的函數調用和返回在RPC中被請求和應答代替了而已。既然如此,在討論REST之前先闡述SOAP,可能是合乎邏輯的順序。
什麼是SOAP?
SOAP (Simple Object Access Protocol) 顧名思義,是一個嚴格定義的信息交換協議,用於在Web Service中把遠程調用和返回封裝成機器可讀的格式化數據。事實上SOAP數據使用XML數據格式,定義了一整套複雜的標簽,以描述調用的遠程過程、參數、返回值和出錯信息等等。而且隨著需要的增長,又不得增加協議以支持安全性,這使SOAP變得異常龐大,背離了簡單的初衷。另一方面,各個伺服器都可以基於這個協議推出自己的API,即使它們提供的服務及其相似,定義的API也不盡相同,這又導致了WSDL的誕生。WSDL (Web Service Description Language) 也遵循XML格式,用來描述哪個伺服器提供什麼服務,怎樣找到它,以及該服務使用怎樣的介面規範,簡言之,服務發現。現在,使用Web Service的過程變成,獲得該服務的WSDL描述,根據WSDL構造一條格式化的SOAP請求發送給伺服器,然後接收一條同樣SOAP格式的應答,最後根據先前的WSDL解碼數據。絕大多數情況下,請求和應答使用HTTP協議傳輸,那麼發送請求就使用HTTP的POST方法。
什麼是REST?
REST (REpresentational State Transfort) 形式上應該表述為客戶端通過申請資源來實現狀態的轉換,在這個角度系統可以看成一臺虛擬的狀態機。拋開R. T. Fielding博士論文里晦澀的理論不說,REST應該滿足這樣的特點:
1)客戶端和伺服器結構;
2)連接協議具有無狀態性;
3)能夠利用Cache機制增進性能;
4)層次化的系統;
5)按需代碼。
說到底,REST只是一種架構風格,而不是協議或標準。但這種新的風格(也許已經歷史悠久?)對現有的以SOAP為代表的Web Service造成的衝擊也是革命性的,因為它面向資源,甚至連服務也抽象成資源,因為它和HTTP緊密結合,因為它伺服器無狀態。
REST與SOAP的區別
因為SOAP並不假定傳輸數據的下層協議,因此必須設計為能在各種協議上運行。即使絕大多數SOAP是運行在HTTP上,使用URI標識服務,SOAP也僅僅使用POST方法發送請求,用一個唯一的URI標識服務的入口。
舉一個圖書館線上查詢管理系統為例,服務提供者必須為每一本書提供一個內部標識,然後可能定義一個listBooks操作來返回一系列圖書,一個getBook操作來返回指定的圖書,一個createBook操作來向資料庫加入新增的圖書,一個deleteBook操作來刪除作廢的圖書,每個操作都有各自的參數,尤其是用內部標識來標識操作的圖書。這種設計被詬病之處,在於deleteBook操作也要用POST方法來發送,而其實HTTP協議有更和邏輯的DELETE方法可用。REST正是這樣設計的,REST為每一個資源(此處是圖書)指定一個唯一的URI,而用HTTP的4種方法GET、POST、PUT、DELETE直觀地表示獲取、創建、更新和刪除圖書。同時圖書集合也是和單本的圖書不同的資源,如果用/books來代表圖書列表,/books/ID來代表標識為ID的圖書,那麼對/books的GET操作就代表返回整個圖書列表,對/books/ID的DELETE操作代表刪除指定的圖書,等等。