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

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

我已经通过教程了解到,我们可以通过单独使用MVC以及使用Web API模板来制作API。

那么,基于体系结构用法 ,这两者之间有什么区别呢?

基本上, Web API控制器是一个MVC控制器,它使用HttpMessageResponse作为其响应的基本types,而不是ActionResponse 。 他们在其他方面是一样的。 项目types之间的主要区别在于MVC Application项目types添加了网站特定的东西,比如缺省CSSJavaScript文件和网站所需的其他资源,而这些不需要API。

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

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

更新:对于ASP.NET Core,Web API已被集成到MVC 6项目types中,并且ApiController类被整合到Controller类中。 更多详细信息,请访问: https : //wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

我的两分钱…

  1. ASP.Net MVC中 – MVC的Controller决定什么应该是View – 即控制器决定什么时候用户应该“看到”(基于当前的场景或上下文),当他们提出请求时。
  2. ASP.Net Web窗体中ASPX页面决定用户在发出请求时应该“看到”什么。
  3. 但在Web API中 ,没有任何Web APIfunction的控制/权力来决定用户在发出请求时应该“看到”什么。

Web API不是仅与网站绑定的技术。 它可以用于多种目的 – 不仅仅是网站。 所以它不知道rendering的意义

进一步阅读

  1. 规划今天的Web解决scheme:Web窗体,ASP.NET MVC,Web API和OWIN。
  2. WCF或ASP.NET Web API? 我的两分钱的主题
  3. 下一代.NET – ASP.NET vNext
  4. ASP.NET MVC 6入门