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

时间:2013-05-13 14:00:58

标签: asp.net-mvc asp.net-mvc-3 rest asp.net-mvc-4 asp.net-web-api

标题真的总结了我的问题。我已经使用了这两种技术,但我不确定哪种技术与另一种技术有很大不同。实质上:

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

1 个答案:

答案 0 :(得分:17)

<强>目的

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假定基本类型来自查询字符串,而非基本类型来自表单。它还假设您只想在没有缓存的情况下读取表单主体,以降低内存使用率并提高性能。

违背默认值需要额外的工作,对我来说,根本没有意义。

编辑:

此外,默认情况下,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之间没有区别。