C# MVC5项目与WebAPI项目的区别

C# MVC5项目与WebAPI项目的区别,c#,asp.net,asp.net-mvc,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Web Api,我不熟悉ASP.NET MVC和Web API,并尝试获取基础知识。好的,我们在VS 2013中有项目模板,命名为MVC,WebAPI和这两个模板一起 我已经阅读了这些教程,了解到我们可以单独使用MVC和WebAPI模板来制作API 那么,基于体系结构和使用情况,它们之间有什么区别呢?基本上,webapi控制器是一个MVC控制器,它使用HttpMessageResponse作为其响应的基本类型,而不是ActionResponse。他们在大多数其他方面都是一样的。项目类型之间的主要区别在于MVC应

我不熟悉ASP.NET MVC和Web API,并尝试获取基础知识。好的,我们在VS 2013中有项目模板,命名为
MVC
WebAPI
这两个模板一起

我已经阅读了这些教程,了解到我们可以单独使用MVC和WebAPI模板来制作API


那么,基于体系结构和使用情况,它们之间有什么区别呢?

基本上,
webapi
控制器是一个
MVC
控制器,它使用
HttpMessageResponse
作为其响应的基本类型,而不是
ActionResponse
。他们在大多数其他方面都是一样的。项目类型之间的主要区别在于
MVC应用程序
项目类型添加了特定于web的东西,如默认
CSS
JavaScript
文件以及web站点所需的其他资源,而API不需要这些资源

MVC用于创建网站。在这种情况下,
控制器
通常会向浏览器请求返回
视图
(即HTML响应)。另一方面,Web API通常用于其他应用程序。如果您希望允许其他应用程序访问您的数据/功能,可以创建一个Web API来促进此访问。例如,Facebook有一个API,允许应用程序开发人员访问有关使用该应用程序的用户的信息。Web API不必用于公共消费。您还可以创建一个API来支持您自己的应用程序。例如,我们创建了一个Web API来支持MVC网站的AJAX功能

微软改变了他们展示不同模板的方式。现在,他们不再为不同的项目类型使用不同的模板,而是鼓励开发人员根据需要在同一项目中混合使用ASP.NET技术。微软称之为
vNext

更新:对于ASP.NET核心,Web API已集成到MVC 6项目类型中,
ApiController
类合并到
Controller
类中。更多详细信息请访问:

我的两分钱

  • ASP.Net MVC中,MVC的
    控制器决定
    视图应该是什么,也就是说,控制器决定用户在发出请求时应该“看到”什么(基于当前场景或上下文)
  • 在ASP.Net Web表单中,
    ASPX
    页面决定用户在发出请求时应“看到”的内容
  • 但是在Web API中,Web API的任何功能都无法控制/控制,无法决定用户在发出请求时应该“看到”什么
  • WebAPI不是一种仅与网站相关的技术。它可以用于多种用途——不仅仅是网站。所以它不知道
    渲染的含义

    进一步阅读


  • MVC控制器派生自控制器类。在Mvc中,您可以返回视图。Mvc achitecture用于创建应用程序。然而,Web API用于向各种应用程序提供数据

    Web Api驱动器来自Api控制器,它不返回视图


    注意:您也可以从MVC控制器创建Web Api,但需要以JsonResult或其他Web Api支持的返回类型返回结果

    除了这里已经提供的答案之外,值得注意的是,任何从ApicController继承并具有Http谓词POST操作的控制器只能有一个[FromBody]输入参数。如果使用MVC控制器(源自“控制器”),您可以拥有许多后期输入参数。

    谢谢Elad,我得到了它。您可以对您的ans进行en编辑,并添加一些关于Asp.net Identity和Web Api 2的内容,只是一些如何使用和受益的内容。只是一些文字。我无法从比较的代码中看出为什么WebAPI更具可读性。另外,它看起来有点不对劲,因为它是一个Web API,应该有一个HTTP方法属性,比如[HttpGet]。检查一些WebAPI(和WebAPI 2)代码,接受的答案是“基本上,一个WebAPI控制器就是一个MVC控制器”。这完全是错误的。您的回答指出WebAPI的全部要点是它不是MVC,它不必处理处理“视图”和“渲染”的所有负担和开销。。。而且WebApi控制器甚至不必只与网站绑定。非常好的回答-谢谢!