http服務 WCF、Web API、Web service、WCF REST之間的區別web
在.net平臺下,有大量的技術讓你建立一個HTTP服務,像Web Service,WCF,如今又出了Web API。在.net平臺下,你有不少的選擇來構建一個HTTP Services。我分享一下我對Web Service、WCF以及Web API的見解。瀏覽器
Web Service緩存
一、它是基於SOAP協議的,數據格式是XML框架
二、只支持HTTP協議單元測試
三、它不是開源的,但能夠被任意一個瞭解XML的人使用測試
四、它只能部署在IIS上.net
WCF【Windows Communication Foundation】是由微軟開發的一系列支持數據通訊的應用程序框架,能夠翻譯爲Windows 通信開發平臺。翻譯
一、這個也是基於SOAP的,數據格式是XML版本控制
二、這個是Web Service(ASMX)的進化版,能夠支持各類各樣的協議,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.orm
三、WCF的主要問題是,它配置起來特別的繁瑣
四、它不是開源的,但能夠被任意一個瞭解XML的人使用
五、它能夠部署應用程序中或者IIS上或者Windows服務中
WCF Rest
一、想使用WCF Rest service,你必須在WCF中使用webHttpBindings
二、它分別用[WebGet]和[WebInvoke]屬性,實現了HTTP的GET和POST動詞
三、要想使用其餘的HTTP動詞,你須要在IIS中作一些配置,使.svc文件能夠接受這些動詞的請求
四、使用WebGet經過參數傳輸數據,也須要配置。並且必須指定UriTemplate
五、它支持XML、JSON以及ATOM這些數據格式
Web API
一、這是一個簡單的構建HTTP服務的新框架
二、在.net平臺上Web API 是一個開源的、理想的、構建REST-ful 服務的技術
三、不像WCF REST Service.它可使用HTTP的所有特色(好比URIs、request/response頭,緩存,版本控制,多種內容格式)
四、它也支持MVC的特徵,像路由、控制器、action、filter、模型綁定、控制反轉(IOC)或依賴注入(DI),單元測試。這些可使程序更簡單、更健壯
五、它能夠部署在應用程序和IIS上
六、這是一個輕量級的框架,而且對限制帶寬的設備,好比智能手機等支持的很好
七、Response能夠被Web API的MediaTypeFormatter轉換成Json、XML 或者任何你想轉換的格式。
WCF和WEB API我該選擇哪一個?
一、當你想建立一個支持消息、消息隊列、雙工通訊的服務時,你應該選擇WCF
二、當你想建立一個服務,能夠用更快速的傳輸通道時,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其餘傳輸通道不可用的時候也能夠支持HTTP。
三、當你想建立一個基於HTTP的面向資源的服務而且可使用HTTP的所有特徵時(好比URIs、request/response頭,緩存,版本控制,多種內容格式),你應該選擇Web API
四、當你想讓你的服務用於瀏覽器、手機、iPhone和平板電腦時,你應該選擇Web API