RESTful 服務架構風格 * .NET的RESTful框架 OpenRasta

REST 的約束採用的就是掌控 Web 的基本原則。這些原則是:
  • 用戶代理與資源交互,任何可命名和表達的事物均可稱爲資源。每項資源都有一個惟一的統一資源標識符 (URI)。
  • 與資源的交互(經過其惟一的 URI 定位)使用 HTTP 標準動詞(GET、POST、PUT 和 DELETE)的統一接口完成。交互中聲明資源的媒體類型也很重要,它使用 HTTP 內容類型標頭指定。(XHTML、XML、JPG、PNG 和 JSON 就是一些廣爲人知的媒體類型。)
  • 資源是自我描述的。處理資源請求所需的所有信息均包含在請求自己內(這樣服務能夠沒有狀態)。
  • 資源包含到其餘資源的連接(超媒體)。

 

您爲何應關注 REST?
如今我對 REST 作一些解釋,您可能正在想爲何要對它加以關注。做爲開發人員,您須要必定的動機來學習和採納任何風格、技術或模式。若是您閱讀此雜誌,您多是常與 Microsoft 技術打交道的開發人員。要實現客戶端-服務器應用程序,您可能使用的是另外一種體系結構風格:遠程過程調用 (RPC)。不管您用過的是專用 RPC 系統(例如 DCOM 或 . NET Remoting),仍是可互操做的 RPC 技術(例如,使用 ASMX 或 WCF 的 SOAP),它們都是在 Microsoft 平臺上展示的客戶端-服務器風格。那麼,爲何要學習或使用 REST?
據我所知有兩個主要緣由。首先,REST 在許多方面所表現出的重要功能和優勢都遠勝於 RPC 技術。其次,Microsoft 正在將自身許多實現從 RPC 技術(例如 SOAP)轉爲 REST。這意味着即便您對使用 REST 構建本身的系統尚在猶豫,隨着 Microsoft 和其餘公司將更多的框架和技術轉向 REST,您仍需瞭解如何與之交互。
如下是一份其餘優勢的列表(並不是所有優勢都已列出):
緩存 使用 HTTP 向 RESTful 端點申請數據時,用到的 HTTP 動詞是 GET。對於 GET 請求響應中返回的資源,能夠用多種不一樣的方式進行緩存。Conditional GET 就是可供選擇的一種實現細節,客戶端能夠向服務驗證他的數據是否爲最新版本;RESTful 端點能夠經過它進一步提升速度和可伸縮性。
擴展 REST 鼓勵每項資源包含處理特殊請求所需的全部必要狀態。知足這一約束時,RESTful 服務更易於擴展且能夠沒有狀態。
反作用如您使用 GET 請求資源,RESTful 服務應該沒有反作用(遺憾的是,與其餘一些 REST 約束相比,這一約束更容易被打破)。
冪等 統一接口另外兩個經常使用到的主要 HTTP 動詞是 PUT 和 DELETE。用戶代理想要修改資源時最常使用 PUT,DELETE 能夠自我描述。要點(也就是「冪等」一詞所強調的)是您能夠對特殊資源屢次使用這兩個動詞,效果與首次使用同樣——至少不會有任何其餘影響。構建可靠的分佈式系統時(即錯誤、網絡故障或延遲可能致使屢次執行代碼),這一優勢可提供保障。
互操做性 許多人將 SOAP 捧爲創建客戶端-服務器程序最具互操做性的方法。但一些語言和環境至今仍沒有 SOAP 工具包。有一些雖然有工具包,但採用的是舊標準,不能保證與使用更新標準的工具包可靠溝通。對於大多數操做,REST 僅要求有 HTTP 庫(固然,XML 庫一般也頗有幫助),它的互操做性確定強過任何 RCP 技術(包括 SOAP)。
簡易性與其餘優勢相比,這一優勢更主觀一些,不一樣的人可能有不一樣的感覺。對我而言,使用 REST 的簡易性涉及到表明資源的 URI 和統一接口。做爲一名 Web 衝浪高手,我理解在瀏覽器中輸入不一樣的 URI 能夠獲得不一樣的資源(有時也被稱爲 URI 或 URL 黑客,但絕無惡意)。因爲有多年使用 URI 的經驗,因此爲資源設計 URI 對我來講駕輕就熟。使用統一接口簡化了開發過程,由於我沒必要爲每一個須要創建的服務構建接口、約定或 API。接口(客戶端與個人服務交互的方式)由體系結構約束設置。
正如我所說的,這並非一份詳盡的列表,您也不能所以認定 REST 是惟一一種常用的技術。您應該瞭解的是它的長處,以便在須要時可以加以利用。
 
目前,wcf也能夠經過如下新特性完成restful功能架構
編程模型有兩個主要的新屬性:WebGetAttribute 和 WebInvokeAttribute;還有一個 URI 模板機制,幫助您聲明每種方法響應用的 URI 和動詞。基礎架構的組成是一個綁定 (WebHttpBinding) 和一種行爲 (WebHttpBehavior),爲使用 REST 提供適宜的連網堆棧。此外,自定義的 ServiceHost (WebServiceHost) 和 ServiceHostFactory (WebServiceHostFactory) 還提供了一些託管基礎架構方面的幫助。
相關文章
相關標籤/搜索