什么是服务以及为什么将它们添加到 ASP.NET Core 中?

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



长风秋雁
浏览 75回答 3
3回答

潇湘沐

ASP.NET Core 使用依赖注入作为一项基本功能来管理整个框架的依赖关系。为了让依赖注入框架知道如何解决依赖关系,需要首先配置这些依赖关系或“服务” 。当您在您的网站中创建 Web 主机时,ASP.NET Core 已经为非常核心的服务执行了此操作,Program.cs但随着您在 Web 应用程序中启用更多功能,您将需要向应用程序添加其他服务以选择加入功能。例如services.AddMvc(),添加在应用程序中启用 MVC 功能和中间件所需的服务。或者services.AddAuthentication()添加在您的应用程序中启用身份验证所需的服务。由于这些功能是基于选择加入的,默认情况下不启用,因此应用程序的作者需要一种方法来控制它。这就是该ConfigureServices方法存在的原因:在这里,您可以添加要启用该功能的服务。此外,您还可以使用它来添加自己的服务,以便您也可以在应用程序中使用依赖注入;例如在控制器中解析您自己的服务。依赖注入实际上是一个相当复杂的话题,所以我建议你看一下关于依赖注入的文档,看看它是如何工作的,以及你可以用它做什么。

跃然一笑

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

一只萌萌小番薯

ConfigureServices方法是:选修的。在 Configure 方法之前由主机调用以配置应用程序的服务。配置选项按约定设置的位置。典型的模式是调用所有的Add{Service}方法,然后调用所有的services.Configure{Service}方法。例如,请参阅[配置身份服务][1]。主机可能会在调用 Startup 方法之前配置一些服务。有关详细信息,请参阅主机。对于需要大量设置的功能,有 Add{Service} 扩展方法IServiceCollection。一个典型的 ASP.NET Core 应用程序为 Entity Framework、Identity 和 MVC 注册服务:public void ConfigureServices(IServiceCollection services){&nbsp; &nbsp; services.AddDbContext<ApplicationDbContext>(options =>&nbsp; &nbsp; &nbsp; &nbsp; options.UseSqlServer(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Configuration.GetConnectionString("DefaultConnection")));&nbsp; &nbsp; services.AddDefaultIdentity<IdentityUser>()&nbsp; &nbsp; &nbsp; &nbsp; .AddDefaultUI(UIFramework.Bootstrap4)&nbsp; &nbsp; &nbsp; &nbsp; .AddEntityFrameworkStores<ApplicationDbContext>();&nbsp; &nbsp; services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);&nbsp; &nbsp; // Add application services.&nbsp; &nbsp; services.AddTransient<IEmailSender, AuthMessageSender>();&nbsp; &nbsp; services.AddTransient<ISmsSender, AuthMessageSender>();}将服务添加到服务容器可使它们在应用程序和 Configure 方法中可用。这些服务通过依赖注入或从ApplicationServices.参考:https ://learn.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-2.2#the-configureservices-method
打开App,查看更多内容
随时随地看视频慕课网APP