WCF、WebAPI、WCFREST和Web服務的差別:web
Web服務json
它是基於SOAP和XML的形式返回數據。windows
它僅支持HTTP協議。api
它是開放源,可是不消耗任何客戶端能夠同時理解XML。瀏覽器
它能夠僅在IIS託管。緩存
WCFmvc
它也是基於SOAP和XML的形式返回數據。框架
它是對演化的Web服務(asmx)和支持各類協議(如TCP、HTTP、HTTPS)、命名管道、MSMQ。測試
WCF最主要的問題是,其繁瑣和大量的配置。spa
它是開放源,可是不消耗任何客戶端能夠同時理解XML。
它能夠在應用程序或IIS託管也能夠部署爲windows服務。
WCFREST
使WCFREST服務您必須啓用webhttpbindings。
它支持HTTP動詞GET和POST[][]和webgetwebinvoke屬性。
啓用HTTP動詞之外,你還得在配置IIS來接受該請求的特定動詞對.svc文件
使數據經過使用webget須要配置參數。必須指定該uritemplate
它支持XML、JSON和Atom格式數據。
WebAPI
這是新的框架來構建HTTP服務的簡單和容易方式。
開放源WebAPI是一個理想平臺服務的REST-ful的NET框架。
WCFREST服務不一樣,它使用了HTTP的特色充分相似(URI、請求/響應報頭,緩存,版本、各類內容格式)
它還支持MVC的特徵,諸如路由、控制器、操做結果、過濾器、活頁夾、或IOC依賴注入容器,測試單元,使其更加簡單和魯棒。
它能夠託管在應用程序或IIS下。
它是結構良好的和重量輕的設備具備有限的帶寬,如智能電話。
響應格式化爲JSON,XML或任何格式,您須要添加一個mediatypeformatter。
如何選擇WCF、WebAPI
對於單向消息傳遞、消息隊列、半雙工通訊等能夠選擇WCF。
當須要使用全特徵的(如HTTPURI,請求/響應報頭,緩存,版本、各類內容格式),能夠選擇WebAPI。
當須要創建服務於瀏覽器、移動電話、iPhone和平板電腦的項目能夠選擇WebAPI。
ASP.NETMVC和ASP.NETWebAPI
使用ASP.NETMVC建立Web應用返回數據,可是ASP.NETWebAPI被用於建立完整HTTP服務的容易且簡單的方式,不僅返回數據視圖。
有助於構建webAPI(REST)風格的服務。NET框架,它還支持內容協商(約決定最佳響應格式數據,該數據能夠是可由客戶端的JSON、XML或其它格式的數據),自託管的MVC。
WebAPI也須要返回數據的特定格式(如JSON,XML或任何其它基於接收的報頭的請求。僅在MVC中使用JSON格式返回數據jsonresult。
在WebAPI的請求的動做被映射到基於HTTP動詞,但它在MVC中被映射到動做名稱。
ASP.NETWebAPI的新框架和ASP.NET框架的核心部分。該模型結合、過濾、路由和其餘特徵在存在MVCWebAPI不一樣於MVC和存在於新System.Web.Http
組件。在MVC中,這些特徵在與存在System.Web.Mvc
。所以,WebAPI也可使用ASP.NET和做爲獨立的服務層。
您能夠在MVC控制器和WebAPI單個項目來處理高級Ajax請求的返回數據能夠在JSON、XML或其餘格式的全面建設和HTTP服務。一般,這被稱爲自託管WebAPI。
此外,WebAPI是重量輕的應用除了Web體系結構和它也可用於智能手機應用。
mvc主要用於建站,web api主要用於構建http服務