.NET Core 依赖注入生命周期

发布时间 2023-12-07 10:21:24作者: 高小浩upup

在.NET Core中,依赖注入服务的生命周期是指服务实例的寿命范围,即在整个应用程序的生命周期内,服务实例何时被创建、何时被销毁。在.NET Core中,有以下几种主要的依赖注入服务生命周期:

  1. 瞬时(Transient)生命周期

    • 服务以每次请求为一次性创建。每次使用 GetService 方法时都会创建一个新的实例。适合轻量级的无状态服务。
  2. 作用域(Scoped)生命周期

    • 服务在每个作用域(如每个 HTTP 请求)中创建一次。在同一个作用域内多次请求服务时,将会得到同一个实例。适合需要在同一作用域内共享状态的服务,例如数据库上下文。
  3. 单例(Singleton)生命周期

    • 服务在应用程序启动时创建,并在整个应用程序生命周期内保持不变。所有对该服务的请求都返回同一个实例。适合状态无关或者只读状态的服务、第三方库或者线程安全的服务。

在.NET Core中,可以通过以下方式配置服务的生命周期:

// 在Startup.cs中的ConfigureServices方法中配置依赖注入服务的生命周期

public void ConfigureServices(IServiceCollection services)
{
    // 添加瞬时生命周期的服务
    services.AddTransient<IMyTransientService, MyTransientService>();

    // 添加作用域生命周期的服务
    services.AddScoped<IMyScopedService, MyScopedService>();

    // 添加单例生命周期的服务
    services.AddSingleton<IMySingletonService, MySingletonService>();
}

通过合理选择服务的生命周期,可以更好地控制服务的实例化和销毁,从而提升应用程序的性能和效率。