每一次面試都是提升(一)


面試被問WCF與WebApi的區別,頓時汗如雨下,之前還真沒太了解過,特記錄一下!

一、WebService、WCF、WCFRest、WebApi的異同

 WebService:

基於SOAP,返回Xml數據。

只支持HTTP協議。

不開源,但是可以被任何識別Xml的客戶端調用。

只能寄宿在IIS下。

WCF:

基於SOAP,返回Xml數據。

是WebService(ASMX)的進化版,支持TCP、HTTP、HTTPS、Named Pipes、MSMQ等各種的協議。

WCF最大的問題是它繁瑣和大量的配置。

不開源,但是可以被任何識別Xml的客戶端調用。

可以寄宿在應用程序、IIS或者服務中。

WCF Rest:

想使用WCF Rest service,必須使用webHttpBindings。

通過使用[WebGet]和[WebInvoke]屬性,實現HTTP的GET和POST。

要想使用其他的HTTP請求方式,需要在.svc文件中做一些配置,使IIS可以接受這些特殊的請求。

使用WebGet通過參數傳輸數據,也需要配置,而且必須指定UriTemplate。

支持XML、JSON以及ATOM等數據格式。

Web API:

這是一個可以簡單、容易構建HTTP服務的新框架。

WebAPI是在 .NET Framework上構建REST-ful服務開源的理想平台。

與WCF Rest serivce不同,WebAPI具有Http所有的特點(像 URIs,Requet/response headers/caching/versioning/various content formats)。

WebAPI 也支持一些MVC的特性,像routing,controller,action,results,filter,model binders,IOC container or DI,unit testing,使得它更簡單、健壯。

可以寄宿在應用程序或IIS中。

它是輕量級的架構,對具有有限寬帶的設備比較友好,比如智能手機。

二、選擇WCF還是WebAPI?

1.當你想創建一個支持像消息、消息隊列、雙工通信等特殊情況的服務時,選擇WCF

2.當你想創建一個可以使用快速傳輸通道(如TCP、命名管道、甚至UDP(WCF4.5),當其他傳輸通道禁用的時候也能支持HTTP)的服務時,選擇WCF 

3.當你想創建一個基於HTTP,可以使用HTTP的全部功能(如URI,請求/響應標頭,緩存,版本控制,各種格式的內容)的面向資源的服務時,選擇WebAPI

4.當你想把你的服務暴露給包括瀏覽器、手機、iphone和平板電腦等比較廣泛的調用端時,選擇WebApi

 

 

參考文章:Difference between WCF and Web API and WCF REST and Web Service

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM