Sobes.tech
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 сервисе, где је потребан нови пример сваки пут.