ASP.NET Core 依賴注入傳入帶參構造函數


服務在ASP.NET Core依賴注入中的生命周期:

  1. Transient 類型的服務在每次注入或請求的時候被創建。
  2. Scoped 類型的服務按照作用域被創建。在Web程序中,每個Web請求都會創建新的隔離的服務作用域。這意味着Scoped類型的服務通常會根據Web請求創建。
  3. Singleton 類型的服務由DI容器創建。這通常意味着它們根據應用程序僅僅被創建一次,然后用於應用程序的整個生命周期。

context.Services.AddTransient<ICompressService>(x=>new CompressService(2048));

context.Services.AddTransient<IEncryptService>(x=>new EncryptService("saf#top9"));

context.Services.AddSingleton<IMQTTService, MQTTService>();

  • 盡可能地將你的服務注冊為 Transient 類型。因為設計Transient服務是簡單的。你通常不用關心多線程問題和內存泄漏問題,並且你知道這類服務只有很短的生存期。
  • 謹慎使用 Scoped 類型服務生命周期,因為如果你創建了子服務作用域或者由非Web程序使用這些服務,那么它會變得詭異復雜。
  • 謹慎使用Singleton 類型的生命周期,因為你需要處理多線程問題和潛在的內存泄漏問題。
  • 不要在Singleton服務上依賴 Transient類型或者 Scoped類型的服務。因為當單例服務注入的時候,Transient服務也會變成單例實例。並且如果Transient服務不是設計用於支持這樣的場景的話則可能會導致一些問題。ASP.NET Core的默認DI容器在這種情況下會拋出異常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM