WCF和ASP.NET Web API在应用上的选择
在最近發布的Visual Studio 2012及.NET 4.5中, 微軟正式推出新的網絡服務框架ASP.NET Web API。作為ASP.NET MVC 4的一部分,ASP.NET Web API這套開源框架的設計目的是簡化RESTful服務的開發和使用。
ASP.NET Web API 與之前的內建HTTP服務解決方案的不同之處在于,它一開始就是圍繞HTTP協議及其消息語義構建起來的。與WCF REST或ASP.NET AJAX加ASMX相比,它不是對現有框架的增強,而是一個全新的平臺。新的ASP.NET Web API的優勢在于它匯集了之前各平臺的各種最佳特性,結合為一個全面而不臃腫的HTTP平臺。
微軟已經有了一個的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請求和響應,又能輕松創建各種控制器,好像是創建這種新類型服務的合適途徑。
- 支持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框架
轉載于:https://www.cnblogs.com/zagelover/articles/2954380.html
總結
以上是生活随笔為你收集整理的WCF和ASP.NET Web API在应用上的选择的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每月定投1000三年有多少收益 可能会
- 下一篇: 新材料板块的龙头股 必须给大家介绍一下