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

我是新的 ASP.NET MVC网络应用程式介面和试图得到的基本知识。在 AFAIK,我们在 VS 2013中有项目模板,命名为 MVCWeb APIBoth of them together

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

那么,基于 建筑学用法,它们之间的区别是什么?

81163 次浏览

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

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

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

更新: 对于 ASP.NET Core,Web API 已经被集成到 MVC 6项目类型中,而 ApiController类被合并到 Controller类中。更多详情请访问: http://wildermuth.com/2016/05/10/Write-API-Controllers-in-ASP-NET-MVC-6”rel = “ norefrer”> https://wildermuth.com/2016/05/10/writing-api-controllers-in-asp-net-mvc-6

我的建议是。

  1. ASP.Net MVC-MVC 的 Controller决定什么应该是 View-也就是说,控制器决定用户应该“看到”什么(基于当前场景或上下文) ,当他们发出一个请求。
  2. 网上表格中,ASPX页面决定用户在发出请求时应该“看到”什么。
  3. 但是在 网络应用程式介面中,没有对 Web API 的任何特性的控制/权力来决定用户在发出请求时应该“看到”什么。

网络应用程序接口(WebAPI)不仅仅是一种与网站绑定在一起的技术。它可以用于多种目的-不仅仅是网站。所以它不知道 rendering的意思

进一步阅读

  1. 今天规划 Web 解决方案: Web Forms,ASP.NET MVC,Web API 和 OWIN。
  2. WCF 还是 ASP.NET Web API
  3. 下一代.NET-ASP.NET vNext
  4. 开始使用 ASP.NET MVC 6

从控制器类派生的 MVC 控制器。在 Mvc 中可以返回视图。Mvc 体系结构用于创建应用程序。然而,Web apis 用于向各种应用程序提供数据。

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

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

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