Sobes.tech
Junior — Middle

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:

  1. 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.

  2. 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é.

  3. 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.