Web API 和 ASP MVC 之间的主要区别是什么?

8
我的问题可以用标题来总结。我已经使用了这两种技术,但我不确定它们之间有什么实质性的区别。因此:
在设计restful web应用程序时,选择ASP MVC或Web API时应该考虑哪些标准和/或指导?
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中创建额外的类来处理文本/ HTML内容协商或在MVC中添加逻辑以处理OData查询。

假设

默认情况下,MVC和Web API的假设也不同。MVC默认假设用户提交的数据可以来自多个来源,无论是在查询字符串中还是在表单中。

Web API默认假设原始类型来自查询字符串,非原始类型来自表单。它还假定您只想读取一次表单体,而不缓存,以实现更低的内存使用和更好的性能。

违反默认设置需要进行额外的工作,这对我来说完全没有意义。

编辑:

MVC的JsonResult默认阻止GET AJAX请求以防止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之间没有区别。


1
如果我理解正确的话,您是在说两者之间的主要区别是ASP MVC被设计用于输出HTML,而Web API被设计用于输出其他所有内容。这是唯一需要考虑的因素吗? - Nathan
2
据我所知,是的。我将使用MVC来构建我的网站,同时使用Web API来提供移动应用程序所需的数据。它们两者都可以存在于同一个项目中。 - Jeow Li Huan
@JeowLiHuan 很容易去除Web Api中的内置默认值并使用自己的默认值集合。以此方式,它可以成为你自己的主观Web Api框架的基础。 - Darrel Miller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接