Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Web API和ASP MVC之间的主要区别是什么_Asp.net Mvc_Asp.net Mvc 3_Rest_Asp.net Mvc 4_Asp.net Web Api - Fatal编程技术网

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

Asp.net mvc Web API和ASP MVC之间的主要区别是什么,asp.net-mvc,asp.net-mvc-3,rest,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc,Asp.net Mvc 3,Rest,Asp.net Mvc 4,Asp.net Web Api,这个题目确实概括了我的问题。我已经使用了这两种技术,但我不确定其中一种技术提供了与另一种技术有本质区别的技术。实质上: 在设计REST Web应用程序时,当选择ASP MVC或WEB API时,应该考虑什么标准和/或指南? < P> 目的< /强> NET MVC致力于简化HTML的输出。ASP.NET Web API致力于简化原始数据的输出 在WebForms世界中,ASP.NET MVC将相当于.aspx页面,而ASP.NET Web API将相当于.asmx 虽然没有什么是不可能的 虽然

这个题目确实概括了我的问题。我已经使用了这两种技术,但我不确定其中一种技术提供了与另一种技术有本质区别的技术。实质上:


在设计REST Web应用程序时,当选择ASP MVC或WEB API时,应该考虑什么标准和/或指南?

< P> <强>目的< /强>

NET MVC致力于简化HTML的输出。ASP.NET Web API致力于简化原始数据的输出

在WebForms世界中,ASP.NET MVC将相当于.aspx页面,而ASP.NET Web API将相当于.asmx

虽然没有什么是不可能的

虽然可以使WebAPI输出HTML和MVC输出原始数据,但您还需要额外的工作。例如,在WebAPI中创建额外的类来处理内容协商期间的文本/html,或者在MVC中添加逻辑来处理OData查询

假设

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

默认情况下,Web API假定基元类型来自查询字符串,而非基元类型来自表单。它还假设您只想读取表单主体一次,而不需要缓存,以降低内存使用率并提高性能

违背默认值需要额外的工作,这对我来说毫无意义

编辑:

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

MVC 6的更新

MVC 6将MVC和Web API统一起来,允许您像在MVC中一样返回ViewResult,或者像在Web API中一样返回object,框架将负责内容协商,为您创建HTML、JSON或XML。在MVC中,通过使用其自定义管道而不是System.Web提供的管道,内存使用率也会降低


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

如果我理解正确的话,您是说两者之间的主要区别是ASP MVC设计用于输出HTML,而Web API设计用于输出所有其他内容。这是唯一应该考虑的因素吗?据我所知,是的。我将在我的网站上使用MVC,而Web API将提供我的移动应用程序所需的数据。它们都可以驻留在同一个项目中。@JeowLiHuan从Web Api中去掉框内默认值并使用您自己的默认值集非常容易。这样,它就可以成为你自己固执的Web API框架的基础。