Junior — Middle
Čime se razlikuje oblast vidljivosti objekata Scoped od Transient u kontekstu Dependency Injection?
sobes.tech АИ
Одговор од АИ
У контексту Dependency Injection у C# областима Scoped и Transient одређују време живота створених објеката:
-
Transient: објекат се креира сваки пут када се захтева. То значи да ће при сваком позиву сервиса или инјекцији бити креиран нови пример.
-
Scoped: објекат се креира једном током трајања једног захтева (scope). У веб апликацијама, то обично значи да ће током једног HTTP захтева бити коришћен исти пример, али за други захтев ће се креирати нови.
Пример:
services.AddTransient<IMyService, MyService>(); // нови објекат при сваком захтеву
services.AddScoped<IMyService, MyService>(); // један објекат по HTTP захтеву
Стога, Scoped је погодан за чување стања у оквиру једног захтева, а Transient — за stateless сервисе, где је потребан нови пример сваки пут.