微軟隨.NET 4.5發布新REST API框架
在最近發布的 Visual Studio 2012 及 .NET 4.5中, 微軟正式推出新的網絡服務框架 ASP.NET Web API。作為 ASP.NET MVC 4 的一部分,ASP.NET Web API 這套開源框架的設計目的是簡化 RESTful 服務的開發和使用。
在“Where does ASP.NET Web API Fit?”這篇博文中, West Wind Technologies 的 Rick Strahl 解析了 ASP.NET Web API 的目標與優勢。
ASP.NET Web API 與之前的內建 HTTP 服務解決方案的不同之處在于,它一開始就是圍繞 HTTP 協議及其消息語義構建起來的。與 WCF REST 或 ASP.NET AJAX 加 ASMX 相比,它不是對現有框架的增強,而是一個全新的平臺。新的 ASP.NET Web API 的優勢在于它匯集了之前各平臺的各種最佳特性,結合為一個全面而不臃腫的 HTTP 平臺。這套 Web API 基于 ASP.NET,又借用了很多 ASP.NET MVC 的概念,應該很容易被 ASP.NET 的開發者適應和熟悉。
Strahl 指出 ASP.NET Web API 有一些核心功能,能讓它成為 ASP.NET MVC 框架現用戶的自然選擇,同時也切合 HTTP 端點開發者的需要。
- 完善支持 URL 路由,透過用戶熟悉的 MVC 風格路由語義,生成干凈的 URL
- 根據 Accept 標頭對請求和響應的序列化形式進行內容協商(Content Negotiation)
- 支持大量輸出格式,包括 JSON、XML、ATOM 等
- 默認對 REST 語義有完善支持,同時又不強制限定必須使用 REST 語義
- 易于擴展的 Formatter 機制,支持添加新的輸入/輸出類型
- 可通過 HttpResponseMessage 類、HttpRequestMessage 類和強類型枚舉來描述大量的 HTTP 操作,提供對更高級的 HTTP 特性的深度支持
- 基于慣例的設計引導用戶按 HTTP Services 的正確方式行事
- Formatters 和 Filters 延續了 MVC 的擴展模型,具備出色的擴展能力
- 用于非 Web 程序時,可以脫離 IIS 運行(Self-hostable)
- 具備可測試性,測試機制的設計類似于 MVC
</ul> </blockquote>微軟現有的 Web 服務框架叫做 Windows Communication Foundation( WCF),它利用 TCP、HTTP、MSMQ 等傳輸協議構建“契約先行”的服務。WCF 最初為基于 SOAP 的服務而設計,首先支持的是 WS-*功能,但后來添加了少量迎合 REST 的功能。按照 Ido Flatow 在一篇 Code Project 文章中的描述,ASP.NET Web API 一開始也歸在 WCF 框架旗下,但最終被移交到 ASP.NET 團隊。
隨著時間流逝,WCF Web API 為了讓 WCF 適配到”原生”HTTP 世界,遇到了很多困難。因為 WCF 主要是為基于 SOAP 的 XML 消息設計的,為了讓 Web API 成為 WCF 一部分,需要動的手術實在有點大(至少 Web API 的開發者們給了我這樣的印象)。另一方面,ASP.NET MVC 的基礎設施既能優雅地處理 HTTP 請求和響應,又能輕松創建各種控制器,好像是創建這種新類型服務的合適途徑。
WCF 在最新的 .NET 4.5 中依然健在,Flatow 給出了一些在 WCF 和 ASP.NET Web API 之間做出選擇的標準。
- 如果想讓服務支持特殊場景,如單向消息傳遞、消息隊列、雙向通信等等,最好選擇 WCF。
- 如果想讓服務優先使用快速傳輸通道,如 TCP、Named Pipes,甚至 UDP(在 WCF 4.5 中),然后在所有其他傳輸都不可用的時候支持 HTTP,那么最好選擇 WCF,并且把 SOAP 和 WebHttp 兩種綁定都用上。
- 如果服務是建立在 HTTP 之上的面向資源的服務,需要發揮 HTTP 的全部功能,如定義瀏覽器的緩存控制,用 ETags 做版本與并發,傳送圖像、文檔、HTML 頁面等多種類型的內容,在響應中用 URI 模板去包含 Task URIs,那么新的 Web API 是最好的選擇。
- 如果服務是多目標環境的,既可作為面向資源的服務走 HTTP 通道,又可作為 RPC 風格的 SOAP 服務走 TCP 通道——先跟我談談吧,我會給你一些指點。
</ul> </blockquote>ASP.NET Web API 已經包含在 Visual Studio 2012 中,Visual Studio 2010 用戶可單獨下載。需要上手指導的開發者可以在該團隊的 Codeplex 網站上找到很多示例項目。
查看英文原文:Microsoft Release New REST API Framework as Part of .NET 4.5
來自: InfoQ本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!