8

标题确实总结了我的问题。我使用了这两种技术,但我不确定其中一种技术与另一种技术有什么本质不同。在本质上:

在设计 RESTful Web 应用程序时选择 ASP MVC 或 Web API 时应考虑哪些标准和/或指导?

4

1 回答 1

18

目的

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 之间没有区别。

于 2013-05-13T14:06:13.267 回答