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也有很大的加強,具體能夠看以下系列文章:安全
隨着時間流逝,WCF Web API爲了讓WCF適配到」原生」HTTP世界,遇到了不少困難。由於WCF主要是爲基於SOAP的XML消息設計的,爲了讓Web API成爲WCF一部分,須要動的手術實在有點大(至少Web API的開發者們給了我這樣的印象),是基於RPC風格的API。另外一方面,ASP.NET MVC的基礎設施既能優雅地處理HTTP請求和響應,又能輕鬆建立各類控制器,好像是建立這種新類型服務的合適途徑。websocket
如今咱們擁有了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 解決安全問題。網絡