Asp.net

它應該是 WebAPI 還是 asmx

  • May 15, 2015

我應該為我的兩個簡單 API 使用 ASMX 服務還是 ASP.NET Web API?

我想在我的 ASP.NET MVC 項目中創建兩個簡單的 API。一個接受 3 個參數 ( currentUserID, DataType, ActionName)。它返回它們和它們請求的數據的 XML 字元串。API 由客戶端 JavaScript 程式碼使用。另一個 API 接收 XML 字元串並在伺服器端使用該字元串對數據庫執行操作。

我剛剛回答了一個相關的問題:

ASP.NET Web API 發布後 ASP.NET MVC 框架的未來是什麼

基本上,微軟提供的開發 Web 服務的框架有:

  • ASMX。基於 SOAP 的 XML 服務。

  • WCF。基於 SOAP 的 Web 服務。這些服務是傳統 ASMX 服務的演變,基本上它們專注於將服務本身與傳輸協議分開。這就是為什麼您可以使用多個端點公開相同的服務,因此可以使用多個協議(TCP、HTTP、命名管道、MSMQ、HTTPS)。這種靈活性伴隨著配置問題。社區中對 WCF 的主要抱怨之一是繁瑣且廣泛的配置

  • 網頁 API。基於不在 SOAP 中的 HTTP。這個新的 API 是一個創建服務的新框架。與其他兩個前輩的主要區別在於它基於 HTTP 而不是 SOAP,因此您可以使用幾個 HTTP 功能,例如:

    • 它包含非常有意義和描述性的消息標頭 - 標頭建議消息正文的內容類型,標頭解釋如何記憶體資訊,如何保護資訊等。
    • 使用動詞來定義動作(POST、PUT、DELETE..)
    • 它包含一個可用於發送任何類型內容的正文
    • 它使用 URI 來標識資訊路徑(資源)和操作WEB API 專注於編寫服務以通過 HTTP 公開它們(目前僅在 HTTP 上)。如果您想使用其他協議公開您的服務,那麼您應該考慮使用 WCF。

WEB API基於MVC(如果你想知道它基於MVC的原因,很簡單)

WCF Web API 的另一個目標是整合已知概念,幫助開發人員克服 WCF 面臨的一些缺點,例如龐大的配置、屬性的過度使用以及不能很好地支持測試的 WCF 基礎結構。因此,Web API 使用 IoC,啟用約定優於配置,並嘗試提供更簡單的配置環境。

ASP.NET MVC 基礎結構及其對 HTTP 請求和響應的優雅處理,以及對易於創建的控制器的支持似乎是創建這種新型服務的正確方法。

考慮以下幾點來選擇 WCF 或 WEB API

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

更詳細的比較:

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

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