6

这个标题真的总结了我的问题。我已经使用了这两种技术,但我不确定哪一种产品与另一种产品有很大不同。实质上:Web API和ASP MVC的主要区别是什么?

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

回答

16

目的

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假定原始类型来自查询字符串,而非原始类型来自表单。它还假定你只想在没有缓存的情况下阅读一次表单体,以降低内存使用量并获得更好的性能。

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

编辑:

同时获取AJAX请求被阻止通过MVC的JsonResult默认情况下,防止CSRF,而网页API允许GET默认情况下AJAX请求。

更新MVC 6

MVC 6统一MVC和Web API,并允许您在MVC像返回的ViewResult或对象就像在网络API和框架会照顾内容协商,创建HTML ,JSON或XML。较低的内存使用量也通过使用自定义管道而不是由System.Web提供的MVC到达。

因此,未来MVC和Web API之间没有区别。

+1

如果我理解正确,你是说这两者之间的主要区别是ASP MVC被设计用于输出HTML,并且Web API被设计用来输出其他所有内容。这是人们应该考虑的唯一因素吗? – Nathan 2013-05-13 15:27:08

+2

据我所知,是的。我将为我的网站使用MVC,同时使用Web API来提供我的移动应用程序所需的数据。他们都可以居住在同一个项目中。 – 2013-05-14 05:06:40

+0

@JeowLiHuan从Web Api中删除现成的默认设置并使用自己的默认设置很容易。通过这种方式,它可以成为您自己的自发web api框架的基础。 – 2013-06-05 12:27:42

相关问题