Sobes.tech
Junior — Middle

Care este diferența dintre domeniul obiectelor Scoped și Transient în contextul injecției de dependențe?

sobes.tech AI

Răspuns de la AI

În contextul injecției de dependențe în C#, domeniile Scoped și Transient determină durata de viață a obiectelor create:

  • Transient: obiectul este creat de fiecare dată când este solicitat. Aceasta înseamnă că la fiecare apel al serviciului sau injecție va fi creat o nouă instanță.

  • Scoped: obiectul este creat o singură dată pe durata unei solicitări (scope). În aplicațiile web, acest lucru înseamnă de obicei că în cadrul unei singure solicitări HTTP, aceeași instanță va fi utilizată, dar pentru o altă solicitare va fi creată o nouă.

Exemplu:

services.AddTransient<IMyService, MyService>(); // obiect nou la fiecare solicitare
services.AddScoped<IMyService, MyService>();   // un obiect pe solicitare HTTP

Astfel, Scoped este convenabil pentru păstrarea stării în cadrul unei singure solicitări, iar Transient pentru servicii fără stare (stateless), unde este nevoie de o nouă instanță de fiecare dată.