Asp.net-Mvc

Web API 和 ASP MVC 之間的主要區別是什麼

  • March 2, 2015

標題確實總結了我的問題。我使用了這兩種技術,但我不確定其中一種技術與另一種技術有什麼本質不同。在本質上:

在設計 RESTful Web 應用程序時選擇 ASP MVC 或 Web API 時應考慮哪些標準和/或指導?

目的

ASP.NET MVC 專注於簡化 HTML 的輸出。ASP.NET Web API 專注於簡化原始數據的輸出。

在 WebForms 世界中,ASP.NET MVC 相當於 .aspx 頁面,而 ASP.NET Web API 相當於 .asmx。

雖然沒有什麼是不可能的

雖然可以讓 Web API 輸出 HTML 和 MVC 輸出原始數據,但您需要做一些額外的工作。例如,在 Web API 的內容協商過程中創建額外的類來處理 text/html,或者在 MVC 中添加邏輯來處理 OData 查詢。

假設

MVC 和 Web API 的預設假設也不同。預設情況下,MVC 假定使用者送出的數據可以來自多個來源,無論是在查詢字元串中還是在表單中。

預設情況下,Web API 假定原始類型來自查詢字元串,而非原始類型來自表單。它還假設您只想讀取一次表單主體,而不需要記憶體,以降低記憶體使用率和更好的性能。

違背預設設置需要額外的工作,對我來說,這根本沒有意義。

編輯:

另外,GET AJAX 請求預設被 MVC 的 JsonResult 阻止以防止 CSRF,而 Web API 預設允許 GET AJAX 請求。

MVC 6 的更新

MVC 6 統一了 MVC 和 Web API,並允許您像在 MVC 中一樣返回 ViewResult 或像在 Web API 中一樣返回對象,框架將負責內容協商,為您創建 HTML、JSON 或 XML。通過使用其自定義管道而不是 System.Web 提供的管道,MVC 中的記憶體使用量也會降低。

因此,展望未來,MVC 和 Web API 之間沒有區別。

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