[轉載]WCF和ASP.NET Web API在應用上的選擇

http://www.cnblogs.com/shanyou/archive/2012/09/26/2704814.htmlhtml

http://msdn.microsoft.com/en-us/library/jj823172.aspxandroid

http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-apiios

 

在最近發佈的Visual Studio 2012及.NET 4.5中, 微軟正式推出新的網絡服務框架ASP.NET Web API。做爲ASP.NET MVC 4的一部分,ASP.NET Web API這套開源框架的設計目的是簡化RESTful服務的開發和使用。web

ASP.NET Web API 與以前的內建HTTP服務解決方案的不一樣之處在於,它一開始就是圍繞HTTP協議及其消息語義構建起來的。與WCF REST或ASP.NET AJAX加ASMX相比,它不是對現有框架的加強,而是一個全新的平臺。新的ASP.NET Web API的優點在於它聚集了以前各平臺的各類最佳特性,結合爲一個全面而不臃腫的HTTP平臺。api

微軟已經有了一個的Web服務框架叫作Windows Communication Foundation( WCF),它利用TCP、HTTP、MSMQ等傳輸協議構建「契約先行」的服務。WCF最初爲基於SOAP的服務而設計,首先支持的是WS-*功能,但後 來添加了少許迎合REST的功能。在WCF 4.5也有很大的加強,具體能夠看以下系列文章:安全

  1. What’s new in WCF 4.5? Let’s start with WCF configuration
  2. What’s new in WCF 4.5? A single WSDL file
  3. What’s new in WCF 4.5? Configuration tooltips and intellisense in config files
  4. What’s new in WCF 4.5? Configuration validations
  5. What’s new in WCF 4.5? Multiple authentication support on a single endpoint in IIS
  6. What’s new in WCF 4.5? Automatic HTTPS endpoint for IIS
  7. What’s new in WCF 4.5? BasicHttpsBinding
  8. What’s new in WCF 4.5? Changed default for ASP.NET compatibility mode
  9. What’s new in WCF 4.5? Improved streaming in IIS hosting
  10. What’s new in WCF 4.5? UDP transport support
  11. What’s new in WCF 4.5? WebSocket support (Part 1 of 2)
  12. What’s new in WCF 4.5? WebSocket support (Part 2 of 2)

隨着時間流逝,WCF Web API爲了讓WCF適配到」原生」HTTP世界,遇到了不少困難。由於WCF主要是爲基於SOAP的XML消息設計的,爲了讓Web API成爲WCF一部分,須要動的手術實在有點大(至少Web API的開發者們給了我這樣的印象),是基於RPC風格的API。另外一方面,ASP.NET MVC的基礎設施既能優雅地處理HTTP請求和響應,又能輕鬆建立各類控制器,好像是建立這種新類型服務的合適途徑。websocket

  • 支持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

     如今咱們擁有了2個服務框架,一個基於RPC機制的WCF和一個基於HTTP的ASP.NET Web Api。在咱們的開發實踐中如何進行選擇呢? 能夠參照知名互聯網企業,不管是google,facebook,baidu,新浪仍是騰訊。他們對外開放的接口都是基於Http的Web API,在服務內部框架都是基於SOA架構設計的,通信機制都是採用RPC機制的,例如Google Protocol Buffers ,Facebook thift。 咱們徹底也能夠這樣搭配,在內部通信採用WCF + Protobuf-NET,參看《WCF服務上應用protobuf》,對外的服務採用ASP.NET WEB API。WCF的 TCP、Named Pipes,甚至UDP(在WCF 4.5中)綁定的性能要比HTTP強不少倍,這裏有一個幾年前的微軟的測試報告《WCF 性能基準報告》,對外提供的服務採用Web API同時也是一個業界標準問題,用WebAPI就很容易的跨越ios,android,wp等移動終端平臺,同時有很成熟的OAuth 解決安全問題。網絡

微軟隨.NET 4.5發佈新REST API框架架構

Web API 強勢入門指南框架

Web API 入門指南 - 閒話安全

相關文章
相關標籤/搜索