C# Asp.net Core 中的 AddSingleton、AddScoped 和 AddTransient 有什么区别?
在 Startup.cs 中注册依赖项有三种方法,即 AddSingleton、AddScoped 和 AddTransient。
Add Singleton
当我们将类型注册为单例时,整个应用程序和每个请求都只有一个实例可用。
这类似于拥有一个静态对象。
在第一次请求时创建实例,并且该实例在整个应用程序和每个后续请求中都可用。
public void ConfigureServices(IServiceCollection services){
services.AddSingleton<ILog,Logger>()
}Add Scoped
当我们将类型注册为作用域时,每个请求在整个应用程序中都只有一个实例可用。当新的请求到来时,会创建新的实例。Add scoped 指定每个请求只有一个对象可用。
public void ConfigureServices(IServiceCollection services){
services.AddScoped<ILog,Logger>()
}Add Transient
当我们将类型注册为瞬态时,每次都会创建一个新实例。Transient 为每个服务/控制器以及每个请求和每个用户创建新实例。
public void ConfigureServices(IServiceCollection services){
services.AddTransient<ILog,Logger>()
}| 参数 | Add Singleton | Add Scoped | Add Transient |
|---|---|---|---|
| 实例 | 每个请求/每个用户都相同。 | 每个请求一个。 | 每次都不同。 |
| 释放 | 应用程序关闭 | 请求结束 | 请求结束 |
| 使用场景 | 需要单例实现时。 | 每个用户具有不同行为的应用程序。 | 轻量级和无状态服务。 |
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP