asp.net-mvc - Web API和ASP MVC之间的主要区别是什么

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

标题确实总结了我的问题。我曾经使用过这两种技术,但是我不确定哪一种提供的技术与另一种技术有很大的不同。在本质上:

在设计一个 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假定原始类型来自查询字符串,非原始类型来自表单。它还假定您只希望读取一次窗体主体,而不进行缓存,以降低内存使用量并提高性能。

违背默认值需要额外的工作,对我而言,这根本没有任何意义。

编辑:

另外,默认情况下,MVC的JsonResult阻止GET AJAX请求以防止CSRF,而Web API默认情况下允许GET AJAX请求。

MVC 6的更新

MVC 6统一了MVC和Web API,并允许您像MVC中一样返回ViewResult或像Web API中那样返回对象,并且该框架将负责内容协商,为您创建HTML,JSON或XML。通过使用MVC的自定义管道(而不是System.Web提供的管道),MVC也可以达到较低的内存使用率。

因此,展望 future ,MVC和Web API之间没有区别。

关于asp.net-mvc - Web API和ASP MVC之间的主要区别是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16523970/

相关文章:

asp.net-mvc - MVC 3 SEO 和 Googlebot 异常(exception)

javascript - 在 angularjs 中找不到 url

java - 使用 Spring Data Rest 时公开所有 ID

ASP.NET MVC - 母版页的代码隐藏

asp.net-mvc - 当用户没有互联网时,是否可以从缓存中设置自定义错误页面

asp.net-mvc-3 - $.ajax 调用后的 RedirectToAction MVC 3

jquery - 新页面打开后,事件类未保留在 mvc3 Bootstrap 导航栏中的选定列表项上

javascript - 在javascript中设置asp.net MVC4 web api路由url返回空字符串

java - 使用 REST 从 Spring MVC Controller 返回 XML

javascript - jsonRest 复杂结构与 dojo