什么是服务,为什么要在 ASP.NET Core 中添加它们?

Mih*_*ail 7 c# asp.net-core

我开始学习 ASP.NET Core,在 Web API 模板的框架内,有一个Startup类,其中ConfigureServices()定义了方法。有人可以用简单的语言解释他设置了哪些服务,以及他们为什么需要这些服务吗?谢谢!

pok*_*oke 11

ASP.NET Core 使用依赖注入作为管理整个框架依赖项的基本功能。为了让依赖注入框架知道如何解析依赖,这些依赖或“服务”需要先被配置。

当您在您的 Web 主机中创建 Web 主机时,ASP.NET Core 已经为非常核心的服务执行此操作,Program.cs但是当您在 Web 应用程序中启用更多功能时,您将需要向应用程序添加其他服务以选择使用功能。

例如,services.AddMvc()添加在应用程序中启用 MVC 功能和中间件所需的服务。或者services.AddAuthentication()添加在您的应用程序中启用身份验证所需的服务。

由于这些功能是基于选择加入的并且默认情况下未启用,因此应用程序的作者需要一种方法来控制它。这就是该ConfigureServices方法存在的原因:在这里,您可以添加要启用该功能的服务。

此外,您还可以使用它来添加您自己的服务,以便您也可以在应用程序中使用依赖注入;例如在控制器中解析您自己的服务。

依赖注入实际上是一个相当复杂的话题,所以我建议你看一下关于依赖注入文档,看看它是如何工作的以及你可以用它做什么。

  • @hguser `ConfigureServices` 中的 `Add~` 方法通过添加服务或配置来配置依赖注入容器。“Configure”方法中的“Use~”方法配置 ASP.NET Core *中间件管道*。它们确定传入请求会发生什么以及中间件组件(例如身份验证中间件或路由中间件)处理这些请求的方式和时间。 (5认同)
  • 那么,`Configure`方法中的`app.Usexxxx`和`services.AddXXX`有什么区别呢? (3认同)

Mar*_*man 7

ConfigureServices 有一个参数,类型为 IServiceCollection。IServiceCollection,这是一个DI(依赖注入)容器。向此容器添加服务将使它们可用于依赖项注入。这意味着我们可以将这些服务注入到应用程序的任何位置。ConfigureServices 主要用于 DI 并设置项目中包含的各种库设置。