Asp.net

WCF 和 ASP.NET Web API:兩者的好處?

  • July 15, 2013

我即將開始一個項目,我們有一個後端服務來進行冗長的處理,以便我們的 ASP.NET 網站可以自由地執行更快的請求。因此,我一直在閱讀 WCF 和 Web API 等服務,以了解它們的功能。由於這個後端服務實際上將由多個相互通信的服務組成,並且不會對我們的客戶公開可用,因此 WCF 似乎是這種場景的理想技術。

但是在做了很多研究之後,我仍然對 WCF 和 Web API 之間的好處和區別感到困惑。總的來說,似乎:

  • 如果您想要一個公共和/或 RESTful API,那麼 Web API 是最好的
  • WCF 可以支持比 HTTP 更多的傳輸,因此您可以對它們有更多的控制
  • 由於 WCF 的附加功能/複雜性,Web API 開發似乎比 WCF 更容易

但也許我的問題歸結為以下幾點:

  1. 為什麼 REST 服務會更有益呢?一個完整的 WCF 服務對於公共 API 來說會是一個好主意嗎?還是 WCF 服務可以提供 Web API 無法提供的任何東西?
  2. 相反,如果我有許多需要相互通信的內部服務,並且很樂意只使用 HTTP 作為傳輸,那麼 Web API 會突然成為一個可行的選擇嗎?

我回答了幾個相關的問題:

作為附加資源,我建議您閱讀:

http://www.codeproject.com/Articles/341414/WCF-or-ASP-NET-Web-APIs-My-two-cents-on-the-subjec

如果您想了解有關 REST 的更多資訊,請查看這篇 Martin Fowler 文章

總結:

據我所知,這兩種技術都是由微軟的同一個團隊開發的,WCF 不會停產,它仍然是一種選擇(例如,如果你想提高服務的性能,你可以公開它們通過 TCP 或命名管道)。未來顯然是 Web API

  • WCF 是為與 SOAP 一起工作而建構的
  • Web API 是為使用 HTTP 而建構的

為了做出正確的選擇:

  • 如果您的意圖是創建支持特殊場景的服務——單向消息傳遞、消息隊列、雙工通信等,那麼您最好選擇 WCF
  • 如果您想創建可以在可用時使用快速傳輸通道的服務,例如 TCP、命名管道,甚至可能是 UDP(在 WCF 4.5 中),並且您還希望在所有其他傳輸不可用時支持 HTTP,那麼您就是最好使用 WCF 並同時使用基於 SOAP 的綁定和 WebHttp 綁定。
  • 如果您想通過 HTTP 創建可以使用 HTTP 全部功能的面向資源的服務——使用 ETag 定義瀏覽器的記憶體控制、版本控制和並發,傳遞各種內容類型,如圖像、文件、HTML 頁面等,使用 URI 模板要在您的響應中包含任務 URI,那麼新的 Web API 是您的最佳選擇。
  • 如果你想創建一個多目標服務,它既可以用作 HTTP 上的面向資源的服務,也可以用作 TCP 上的 RPC 樣式的 SOAP 服務——請先跟我談談,我會給你一些建議。

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