如何以及在何处使用 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”
我来自 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”