Junior — Middle
Aký je rozdiel medzi oblasťou viditeľnosti objektov Scoped a Transient v kontexte Dependency Injection?
sobes.tech AI
Odpoveď od AI
V kontexte Dependency Injection v C# určujú oblasti Scoped a Transient dobu života vytvorených objektov:
-
Transient: objekt je vytvorený zakaždým nanovo pri požiadavke. To znamená, že pri každom volaní služby alebo injekcii bude vytvorený nový exemplár.
-
Scoped: objekt je vytvorený raz na čas jedného požiadavku (scope). Vo webových aplikáciách to zvyčajne znamená, že počas jednej HTTP požiadavky bude použitý ten istý exemplár, ale pre inú požiadavku bude vytvorený nový.
Príklad:
services.AddTransient<IMyService, MyService>(); // nový objekt pri každej požiadavke
services.AddScoped<IMyService, MyService>(); // jeden objekt na HTTP požiadavku
Scoped je teda vhodný na uchovávanie stavu v rámci jednej požiadavky, zatiaľ čo Transient je vhodný pre stateless služby, kde je potrebný nový exemplár pri každom volaní.