ccruiの博客

ccruiの博客

.NET 6 常用依赖注入

103
2024-01-21

常用注册

在.NET Core和.NET 6中,服务注册是通过依赖注入(DI)容器实现的。这些服务可以以不同的生命周期进行注册,主要有以下几种方法:

  1. AddSingleton:

    • 注册一个单例服务,该服务在第一次请求时创建,并在应用程序的整个生命周期内持续存在。同一个实例会在所有请求之间共享。
    • 示例用途:配置服务、数据库连接池、日志记录。
  2. AddScoped:

    • 注册一个作用域服务,每个请求创建一个新的服务实例。对于每个请求,使用的都是相同的实例,但不同请求将使用不同的实例。
    • 示例用途:数据访问操作、每个请求的用户信息。
  3. AddTransient:

    • 注册一个短暂服务,每次请求服务时都会创建一个新的实例。这意味着每次注入或者从容器中获取服务时,都会得到一个新的实例。
    • 示例用途:轻量级服务,如数据映射服务。
  4. AddHostedService:

    • 注册一个托管服务,实现了 IHostedService 接口的服务。这些服务在应用程序启动时自动开始,并在应用程序关闭时停止。
    • 示例用途:后台任务、定时任务。
  5. AddSingleton<TService, TImplementation>:

    • 类似于 AddSingleton,但允许你指定服务的接口和实现类,使得依赖注入在解析服务时可以通过接口来实例化指定的类。
  6. AddScoped<TService, TImplementation>:

    • 类似于 AddScoped,也是为每个请求周期提供服务实例,但允许指定服务接口和实现。
  7. AddTransient<TService, TImplementation>:

    • 类似于 AddTransient,每次请求都创建新实例,允许指定服务接口和实现。
  8. AddOptions:

    • 用于注册选项模式服务,这允许使用 IOptions<T> 接口来获取配置选项。
  9. AddMemoryCache:

    • 注册内存缓存服务。
  10. AddDbContext:

    • 用于注册Entity Framework Core的数据库上下文。

其他注册

除了最常用的如 AddSingleton, AddScoped, 和 AddTransient 之外,还有一些其他的服务注册方法,包括一些不那么常用但在特定情况下非常有用的方法。以下是一份更全面的列表:

  1. AddSingleton / AddSingleton / AddSingleton<TService, TImplementation> / AddSingleton<TService, TImplementation>(Func<IServiceProvider, TImplementation>):

    • 用于注册一个单例服务。
  2. AddScoped / AddScoped / AddScoped<TService, TImplementation> / AddScoped<TService, TImplementation>(Func<IServiceProvider, TImplementation>):

    • 用于注册一个作用域服务。
  3. AddTransient / AddTransient / AddTransient<TService, TImplementation> / AddTransient<TService, TImplementation>(Func<IServiceProvider, TImplementation>):

    • 用于注册一个短暂服务。
  4. AddHostedService / AddHostedService(Func<IServiceProvider, THostedService>):

    • 用于注册托管服务。
  5. AddOptions:

    • 用于注册选项模式服务。
  6. AddMemoryCache:

    • 用于注册内存缓存服务。
  7. AddDbContext / AddDbContext / AddDbContext(Action) / AddDbContext(ServiceLifetime):

    • 用于注册Entity Framework Core的数据库上下文。
  8. AddHttpClient:

    • 用于注册 HttpClient 服务,并允许配置。
  9. AddDefaultIdentity / AddIdentity:

    • 用于注册身份认证服务。
  10. AddCors:

    • 用于注册和配置跨源资源共享(CORS)策略。
  11. AddSignalR:

    • 用于注册SignalR服务。
  12. AddControllers / AddControllersWithViews / AddRazorPages:

    • 用于注册MVC、Razor页面或API控制器。
  13. AddLogging:

    • 用于注册日志服务。
  14. AddLocalization / AddLocalization(options => options.ResourcesPath = "Resources"):

    • 用于注册本地化服务。
  15. AddHealthChecks:

    • 用于注册健康检查服务。
  16. AddApiVersioning:

    • 用于注册API版本控制服务。
  17. AddAuthentication / AddAuthorization:

    • 用于注册认证和授权服务。

这些方法涵盖了从基本的服务生命周期管理到更复杂的功能如身份验证、本地化、日志记录和健康检查等。