Asp.net-Web-Api

wcf restful services和WEB API的區別

  • April 12, 2017

我查詢了很久。到底哪裡需要使用WEB API,哪裡需要使用WCF restful services。我們想在 WEB API 中實現什麼,我們都可以在 WCF Rest 中實現。我試圖深入研究答案,但我知道我們需要在 wcf 中進行額外的設置,例如 URI 模板、契約、端點。但它更多關於設置,但我想知道使用 WCF Restful Services 背後的真正原因。

網路服務

  • 它基於 SOAP 並以 XML 格式返回數據。
  • 它僅支持 HTTP 協議。
  • 它不是開源的,但可以被任何理解 XML 的客戶端使用。
  • 它只能託管在 IIS 上。

WCF

  • 它也是基於 SOAP 並以 XML 格式返回數據。
  • 它是 Web 服務 (ASMX) 的演變,支持 TCP、HTTP、HTTPS、命名管道、MSMQ 等各種協議。
  • WCF 的主要問題是其繁瑣而廣泛的配置。
  • 它不是開源的,但可以被任何理解 XML 的客戶端使用。
  • 它可以託管在應用程序或 IIS 上或使用視窗服務。

WCF 休息

  • 要將 WCF 用作 WCF REST 服務,您必須啟用webHttpBindings.
  • 它分別支持 HTTP GET 和 POST 動詞 by[WebGet][WebInvoke]attributes。
  • 要啟用其他 HTTP 謂詞,您必須在 IIS 中進行一些配置以接受該特定謂詞對.svc文件的請求。
  • 使用WebGet需求配置通過參數傳遞數據。UriTemplate必須指定。
  • 它支持 XML、JSON 和 ATOM 數據格式。

網路 API

  • 這是用於以簡單的方式建構 HTTP 服務的新框架。
  • Web API 是開源的,是使用 .NET Framework 建構 RESTful 服務的理想平台。
  • 與 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.c-sharpcorner.com/UploadFile/8a67c0/who-is-winner-web-api-or-wcf/

引用自:https://stackoverflow.com/questions/36441875