Sobes.tech
Junior — Middle

V čem spočívá rozdíl mezi oblastí viditelnosti objektů Scoped a Transient v kontextu Dependency Injection?

sobes.tech AI

Odpověď od AI

V kontextu Dependency Injection v C# určují oblasti Scoped a Transient dobu života vytvářených objektů:

  • Transient: objekt je vytvářen pokaždé znovu při požadavku. To znamená, že při každém volání služby nebo injekci bude vytvořen nový exemplář.

  • Scoped: objekt je vytvořen jednou na dobu jednoho požadavku (scope). Ve webových aplikacích to obvykle znamená, že během jednoho HTTP požadavku bude použit stejný exemplář, ale pro jiný požadavek bude vytvořen nový.

Příklad:

services.AddTransient<IMyService, MyService>(); // nový objekt při každém požadavku
services.AddScoped<IMyService, MyService>();   // jeden objekt na HTTP požadavek

Scoped je tedy vhodný pro uchovávání stavu v rámci jednoho požadavku, zatímco Transient je vhodný pro stateless služby, kde je potřeba nový exemplář pokaždé.