REST WebServices学习
??? 圍繞面向服務的體系結構SOA(Service Oriented Architecture,SOA)的討論很多,圍繞如何正確實現SOA的討論很多。如何構建靈活的異構系統,如何集成現有的系統,如何讓異構系統進行通信?雖然當前主流的方式明顯地集中在基于SOAP、WSDL和WS-*規范的Web Services領域,但也有少數人主張更好的方式是REST,Restful WebService,或者RESTful HTTP。那什么是REST?
REST是 Representational State Transfer (表述性狀態轉移)的縮寫。為什么提這個名字?
Client application transfers state with each resource representation. This is REST.
通過超文本傳輸協議(HTTP)發送簡單的消息來實現 SOA,這基本上就是 REST 式 Web 服務 (RESTful Web services) 的工作方式。REST并不是一個協議或技術;它是一種體系結構風格。
REST 是 SOAP 的輕量型替代品,它是面向資源的,而不是面向操作的。它常常被歸結為遠程過程使用 HTTP 調用 GET、POST、PUT 和 DELETE 語句。我認為,這只是第二個重要的步驟。 (第一個(也是最重要的)步驟是把所有資源建模為 URL 形式。)
(*) REST比較簡單樸素,在安全性,可靠消息傳輸,或標準化的業務過程自動化上還沒有定義。(REST很適合面向數據的應用,但對于面向服務/面向方法的應用,比如需要事務、嚴密的安全性等等這些更高級的操作的應用來說,采用基于WS-*的方案顯得更有道理。)
????? 從基本原理層次上說,REST 樣式和 SOAP 樣式 Web Service的區別取決于應用程序是面向資源的還是面向活動的。例如,在傳統的WebService中,一個獲得天氣預報的webservice會暴露一個WebMethod:string GetCityWether(string city)。而RESTful WebService暴露的不是方法,而是對象(資源),通過Http GET, PUT, POST 或者 DELETE來對請求的資源進行操作。在 REST 的定義中,一個 Web Service總是使用固定的 URI 向外部世界呈現(或者說暴露)一個資源。可以說這是一種全新的思維模式:使用唯一資源定位地址 URI,加上 HTTP 請求方法從而達到對一個發布于互聯網資源的唯一描述和操作。
?? RESTful HTTP核心操作包括:
- GET - 該操作返回已標識資源的狀態表示。您可以通過大量的上下文要素來確定狀態,例如誰正在提交請求、操作的參數(傳入的參數如 HTTP 頭或者查詢字符串參數)和服務提供方維護的當前會話狀態。
- POST - 該操作執行對已標識資源的一些特定于應用程序形式的更新。該操作行為完全依賴于實現它的服務。由該操作返回的數據也完全依賴于應用程序。舉例來說,像 GET 操作一樣,它可以返回一個狀態表示,它還可以選擇根本不返回任何數據。
- PUT - 該操作在已標識位置(URI)創建新資源。操作輸入必須包括一個資源的狀態表示。它完全依賴服務來創建基于這個狀態表示的資源。
- DELETE - DELETE 操作銷毀已標識位置(URI)的資源。
???? REST是無狀態的,服務器無需知道當前操作的上下文,或者上一次操作的情況。這能夠提高系統的可伸縮性,是因為它強制所有操作都是stateless的,這樣就沒有context的約束,如果要做分布式、做集群,就不需要考慮context的問題了。同時,它令系統可以有效地使用pool。REST對性能的另一個提升來自其對client和server任務的分配: server只負責提供resource以及操作resource的服務,而client要根據resource中的data和 representation自己做render。這就減少了服務器的開銷。
?? 在設計 REST 式 WebService時,可以采用以下四個步驟:
具體示例點擊此處參考IBM developworks的文章。
WCF 3.5對REST的支持
微軟提供的例子: Windows CardSpace Samples
WCF REST 快速上手: WCF REST over HTTP Service
新聞:The new WCF Web Programming Model supports REST Design
IBM孵化器項目ProjectZero:
????
??????SOA中的RESTful應用程序(1)
????? SOA中的RESTful應用程序(2)
以下這篇文章深入淺出的講述了什么是REST web service, 以及和傳統Web service的區別: 《Everything about REST web services - What and How》
Part I
Part II
Part III...(Coming soon)
其他文章和資源:
A Brief Introduction to REST
How to Create a REST Protocol
Building Web Services the REST Way?
總結
以上是生活随笔為你收集整理的REST WebServices学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 年轻人不通人情世故的C++短处中
- 下一篇: 你最近学到的 飞鸽传书 东西的题目