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