WCF和ASP.NET Web API在应用上的选择
在最近發(fā)布的Visual Studio 2012及.NET 4.5中, 微軟正式推出新的網(wǎng)絡(luò)服務(wù)框架ASP.NET Web API。作為ASP.NET MVC 4的一部分,ASP.NET Web API這套開源框架的設(shè)計目的是簡化RESTful服務(wù)的開發(fā)和使用。
ASP.NET Web API 與之前的內(nèi)建HTTP服務(wù)解決方案的不同之處在于,它一開始就是圍繞HTTP協(xié)議及其消息語義構(gòu)建起來的。與WCF REST或ASP.NET AJAX加ASMX相比,它不是對現(xiàn)有框架的增強(qiáng),而是一個全新的平臺。新的ASP.NET Web API的優(yōu)勢在于它匯集了之前各平臺的各種最佳特性,結(jié)合為一個全面而不臃腫的HTTP平臺。
微軟已經(jīng)有了一個的Web服務(wù)框架叫做Windows Communication Foundation( WCF),它利用TCP、HTTP、MSMQ等傳輸協(xié)議構(gòu)建“契約先行”的服務(wù)。WCF最初為基于SOAP的服務(wù)而設(shè)計,首先支持的是WS-*功能,但后來添加了少量迎合REST的功能。在WCF 4.5也有很大的增強(qiáng),具體可以看如下系列文章:
隨著時間流逝,WCF Web API為了讓W(xué)CF適配到”原生”HTTP世界,遇到了很多困難。因為WCF主要是為基于SOAP的XML消息設(shè)計的,為了讓W(xué)eb API成為WCF一部分,需要動的手術(shù)實(shí)在有點(diǎn)大(至少Web API的開發(fā)者們給了我這樣的印象),是基于RPC風(fēng)格的API。另一方面,ASP.NET MVC的基礎(chǔ)設(shè)施既能優(yōu)雅地處理HTTP請求和響應(yīng),又能輕松創(chuàng)建各種控制器,好像是創(chuàng)建這種新類型服務(wù)的合適途徑。
- 支持URL路由,透過用戶熟悉的MVC風(fēng)格路由語義,生成干凈的URL
- 根據(jù)Accept標(biāo)頭對請求和響應(yīng)的序列化形式進(jìn)行內(nèi)容協(xié)商(Content Negotiation)
- 支持大量輸出格式,包括JSON、XML、ATOM等
- 默認(rèn)對REST語義有完善支持,同時又不強(qiáng)制限定必須使用REST語義
- 易于擴(kuò)展的Formatter機(jī)制,支持添加新的輸入/輸出類型
- 可通過HttpResponseMessage類、HttpRequestMessage類和強(qiáng)類型枚舉來描述大量的HTTP操作,提供對更高級的HTTP特性的深度支持
- 基于慣例的設(shè)計引導(dǎo)用戶按HTTP Services的正確方式行事
- Formatters和Filters延續(xù)了MVC的擴(kuò)展模型,具備出色的擴(kuò)展能力
- 用于非Web程序時,可以脫離IIS運(yùn)行(Self-hostable)
- 具備可測試性,測試機(jī)制的設(shè)計類似于MVC
???? 現(xiàn)在我們擁有了2個服務(wù)框架,一個基于RPC機(jī)制的WCF和一個基于HTTP的ASP.NET Web Api。在我們的開發(fā)實(shí)踐中如何進(jìn)行選擇呢? 可以參照知名互聯(lián)網(wǎng)企業(yè),無論是google,facebook,baidu,新浪還是騰訊。他們對外開放的接口都是基于Http的Web API,在服務(wù)內(nèi)部框架都是基于SOA架構(gòu)設(shè)計的,通訊機(jī)制都是采用RPC機(jī)制的,例如Google Protocol Buffers ,Facebook thift。 我們完全也可以這樣搭配,在內(nèi)部通訊采用WCF + Protobuf-NET,參看《WCF服務(wù)上應(yīng)用protobuf》,對外的服務(wù)采用ASP.NET WEB API。WCF的 TCP、Named Pipes,甚至UDP(在WCF 4.5中)綁定的性能要比HTTP強(qiáng)很多倍,這里有一個幾年前的微軟的測試報告《WCF 性能基準(zhǔn)報告》,對外提供的服務(wù)采用Web API同時也是一個業(yè)界標(biāo)準(zhǔn)問題,用WebAPI就很容易的跨越ios,android,wp等移動終端平臺,同時有很成熟的OAuth 解決安全問題。
微軟隨.NET 4.5發(fā)布新REST API框架
轉(zhuǎn)載于:https://www.cnblogs.com/zagelover/articles/2954380.html
總結(jié)
以上是生活随笔為你收集整理的WCF和ASP.NET Web API在应用上的选择的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每月定投1000三年有多少收益 可能会
- 下一篇: 新材料板块的龙头股 必须给大家介绍一下