.Net框架有許多技術允許您創建HTTP服務,例如Web Service,WCF和現在的Web API。 互聯網上有很多文章可能描述你應該使用誰。
網絡服務
- 它基於SOAP並以XML形式返回數據。
- 它僅支持HTTP協議。
- 它不是開源的,但可以被任何理解xml的客戶端使用。
- 它只能在IIS上托管。
WCF
- 它還基於SOAP並以XML格式返回數據。
- 它是Web服務(ASMX)的發展,支持TCP,HTTP,HTTPS,命名管道,MSMQ等各種協議。
- WCF的主要問題是其繁瑣而廣泛的配置。
- 它不是開源的,但可以被任何理解xml的客戶端使用。
- 它可以在應用程序中或IIS上或使用窗口服務托管。
WCF休息
- 要將WCF用作WCF Rest服務,您必須啟用webHttpBindings。
- 它分別通過[WebGet]和[WebInvoke]屬性支持HTTP GET和POST動詞。
- 要啟用其他HTTP謂詞,您必須在IIS中進行一些配置,以接受.svc文件上該特定謂詞的請求
- 使用WebGet通過參數傳遞數據需要配置。 必須指定UriTemplate。
- 它支持XML,JSON和ATOM數據格式。
Web API
- 這是用簡單方法構建HTTP服務的新框架。
- Web API是開源的,是通過.NET Framework構建REST-ful服務的理想平台。
- 與WCF Rest服務不同,它使用HTTP的全部功能(如URI,請求/響應頭,緩存,版本控制,各種內容格式)
- 它還支持MVC功能,例如路由,控制器,操作結果,過濾器,模型綁定器,IOC容器或依賴注入,單元測試使其更加簡單和健壯。
- 它可以在應用程序或IIS上托管。
- 它是輕量級架構,適用於智能手機帶寬有限的設備。
- 響應由Web API的MediaTypeFormatter格式化為JSON,XML或您要添加為MediaTypeFormatter的任何格式。
在WCF或WEB API之間選擇誰
- 如果要創建應支持特殊方案的服務(例如單向消息傳遞,消息隊列,雙工通信等),請選擇WCF。
- 如果要創建可在可用時使用快速傳輸通道的服務(例如TCP,命名管道,甚至UDP(在WCF 4.5中)),請選擇WCF,並且還希望在所有其他傳輸通道不可用時支持HTTP。
- 如果要通過HTTP創建可以使用HTTP的完整功能(如URI,請求/響應頭,緩存,版本控制,各種內容格式)的面向資源的服務,請選擇Web API。
- 如果要將服務公開給廣泛的客戶,包括瀏覽器,手機,iPhone和平板電腦,請選擇Web API。
參考: http : //www.dotnettricks.com
作者:Shailendra Chauhan