MVC 5项目和Web Api项目之间的区别

时间:2014-03-23 09:51:05

标签: c# asp.net asp.net-mvc asp.net-web-api

我是 ASP.NET MVC Web API 的新手,并试图获得基础知识。 AFAIK,我们在VS 2013中有项目模板,名为MVCWeb APIBoth of them together

我已经阅读了这些教程并了解到我们可以通过单独使用MVC以及使用Web API模板来创建API。

那么,基于架构用法,它们之间有什么区别?

4 个答案:

答案 0 :(得分:177)

基本上,Web API控制器是MVC控制器,它使用HttpMessageResponse作为其响应的基本类型,而不是ActionResponse。它们在大多数其他方面都是相同的。项目类型之间的主要区别在于MVC Application项目类型添加了特定于Web的内容,例如默认CSSJavaScript文件和网站所需的其他资源,这些不是API。

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

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

更新:对于ASP.NET Core,Web API已集成到MVC 6项目类型中,ApiController类已合并到Controller类中。更多详情请见:https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

答案 1 :(得分:70)

我的两分钱......

  1. ASP.Net MVC 中 - MVC的Controller决定应该是View - 即,控制器决定用户应该“看到”的内容(基于当前场景或上下文),当他们提出请求时。
  2. ASP.Net网络表单中,ASPX页面决定用户在提出请求时应“看到”的内容。
  3. 但是在 Web API 中,任何Web API的功能都没有控制权/权力来决定用户在提出请求时应该“看到”的内容。
  4. Web API不仅仅是与网站捆绑在一起的技术。它可以用于多种用途 - 不仅仅是网站。所以它不知道rendering

    的含义

    进一步阅读

    1. Planning Web Solutions Today: Web Forms, ASP.NET MVC, Web API, and OWIN.
    2. WCF or ASP.NET Web APIs? My two cents on the subject
    3. The Next Generation of .NET – ASP.NET vNext
    4. Getting Started with ASP.NET MVC 6

答案 2 :(得分:0)

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

Web Api从Api控制器驱动,它不会返回视图。

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

答案 3 :(得分:0)

除了这里已经提供的答案之外,值得注意的是任何从ApiController继承并且具有Http动词POST动作的控制器只能有一个[FromBody]输入参数。如果使用MVC控制器(从'Controller'派生),您可以有许多后置输入参数。