如何以及在何处使用 Web API2 以及 MVC 5 应用程序

How & where to use Web API2 along with MVC 5 application

我来自 MVC 开发背景并且我理解 Web Api 概念但是我很难理解我需要在哪里使用 Web Api 如果我正在开发 MVC 应用程序.

如果我在 Web 中构建应用程序,我是否不再需要 MVC,即 MVC 控制器、Razor 代码、强类型数据绑定 API?

我想和Web一起了解MVC应用程序API;从建筑的角度

我有一个新项目,我应该如何在其中使用 Web API。

非常感谢

Web API 只是一种基于 HTTP 协议的服务,可以被任何基于 HTTP 协议的设备使用,包括移动应用程序。如果您想在您的 Web 项目中使用它,那么我建议在所有列表页面中使用它。制作一个 ApiController 并在其中编写所有列表页面功能,然后在 cshtml 页面上。使用 Ajax 调用网络 api 控制器,您可以使用 Angular 还可以构建您的列表页面。这对您来说是很好的练习。至少它对我有用。

这是一个棘手的问题,你知道吗?但我会根据我使用这两个框架开发不同应用程序和服务的经验,尝试给出我的意见。

我认为这两个框架之间最显着的区别在于它们的设计目标:MVC 被构想(并且传统上被用于)构建 网站 而 Web API作为构建服务.

的框架而诞生

MVC

MVC 擅长构建使用传统交互 模型的网站和 Web 应用程序,基于 Web 浏览器作为客户端,同步交互(没有或很少 AJAX) 和 HTML 作为主要的表示语言(这就是为什么我们通常 return 在控制器内部查看)。

从架构的角度来看,MVC 可以被视为跨越表示层和服务层的框架:它可以通过严格由填充视图驱动的接口构建已经是 Web 应用程序的服务。虽然这种应用程序类型可以从更高的角度定义为可互操作,但它肯定仍然局限于一种客户端(Web 浏览器)。

网络API

相反,

Web API 明确设计为构建 服务 的框架,其中许多概念继承自我们在实施 Web 中学到的知识过去的服务SOA。其目的是允许范围广泛的不同设备和客户端通过 HTTP 使用服务。它不仅限制了对网络浏览器的访问,而且可以很容易地用作任何客户端应用程序(移动应用程序、SPA,甚至其他独立服务)和 backend/business 逻辑之间的抽象层(前面提到的服务层),而不会失去 REST 原则和 HTTP 协议提供的所有架构和互操作性优势。

Web API 在与 AngularJS、React、Backbone 等客户端框架结合时表现出色,因为它成为数据和业务逻辑背后的引擎,允许这些框架创建用户和整个应用程序之间更流畅和异步的交互。

虽然 MVC 是否可用于此类目的可能存在争议,但不可否认的是,它并非旨在成为构建由不同类型的客户端使用的服务的框架。

它们不一样吗?

如果我们查看这两个框架的内部架构,我们可能会发现许多共同点和选择。这就是为什么许多人找不到它们之间明确区别的主要原因。在不久的将来(它们现在处于测试阶段)它们将被合并到 ASP.NET Core 中的单个框架 (MVC6)。

一起使用时

在我看来,要求您在单个项目中同时使用 MVC 和 Web API 的用例并不多。这背后的原因与 UI 呈现中采用的不同方法有关:在 MVC Web 应用程序页面中,使用强类型 ViewModel 在服务器端呈现页面,同时将一小部分呈现委托给 AJAX 调用(但不应该是大多数,否则你会发现你对框架的要求太多了)。

在利用 REST 服务(例如使用 Web API 创建的服务)的现代 Web 应用程序中,UI(几乎)完全在客户端呈现,因此需要服务器端 rendering/model 绑定几乎没有:您将 UI 将服务器数据(例如 JSON 格式)与静态资产(HTML、CSS3, JavaScript) 在客户端上。

当您需要以传统方式(使用 MVC)提供 Web 应用程序时,结合这两个框架可能很有用,但您还需要向外部客户提供服务:您的用户将使用您的 MVC 应用程序,而其他服务将使用 Web API 端点(类似于 Facebook、Twitter 等所做的)。

另一个示例可能是一种混合方法,您在其中呈现网站服务器端的一部分(使用 Razor),而您网站的 最动态的 部分使用 AJAX 调用 Web API 端点(例如自动完成字段、异步调用)。但是,坦率地说,我认为这可能会导致无用的并发症,如果 AJAX 调用不是那么多,我会坚持使用 MVC(如果需要,可以 return JSON 对象)。

TL;DR

如果您需要构建动态服务器端网站,请选择 MVC。如果您需要构建供异构客户端(SPA、移动应用程序等)使用的 丰富的 Web 应用程序 ,那么请选择 Web API。最后,如果您想向独立的外部消费者公开您的服务,但又想使用较少的抽象层自己使用它们,请同时使用两者。

更多:
On The Coexistence of ASP.NET MVC and WebAPI
ASP.NET Web API vs. ASP.NET MVC “APIs”