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 SingletonAdd ScopedAdd Transient
例項每個請求/每個使用者都相同。每個請求一個。每次都不同。
釋放應用程式關閉請求結束請求結束
使用場景需要單例實現時。每個使用者具有不同行為的應用程式。輕量級和無狀態服務。

更新於: 2020年9月25日

9K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.