Aké typy životných cyklov objektov existujú v IoC kontajneri a ako sa používajú?
sobes.tech AI
Odpoveď od AI
V IoC (Inversion of Control) kontajneroch sa zvyčajne používajú nasledujúce typy životných cyklov objektov:
-
Transient (Prechodný) — pri každom požiadavke kontajner vytvorí novú inštanciu objektu. Používa sa, keď je potrebný nový objekt pre každú operáciu.
-
Singleton (Jednotný) — kontajner vytvorí pri prvej požiadavke inštanciu objektu a túto vracia pri všetkých ďalších požiadavkách. Vhodné pre služby so stavom alebo zdroje, ktoré musia byť jedinečné.
-
Scoped (Obmedzený) — objekt je vytvorený raz pre daný scope (napríklad pre požiadavku v webovej aplikácii) a v rámci tohto scope sa znovu používa. Po ukončení scope je objekt zničený.
Príklad v C# s použitím Microsoft.Extensions.DependencyInjection:
services.AddTransient<IService, Service>(); // nový objekt pri každom požiadavke
services.AddSingleton<IService, Service>(); // jeden objekt počas celého životného cyklu aplikácie
services.AddScoped<IService, Service>(); // jeden objekt na každý HTTP požiadavok
Výber životného cyklu závisí od požiadaviek na stav objektu a výkonu aplikácie.