Sobes.tech
Junior — Middle

Kādas ir atšķirības starp Scoped un Transient objektu redzesloku Dependency Injection kontekstā?

sobes.tech AI

Atbilde no AI

Dependency Injection kontekstā C# valodā, Scoped un Transient jomas nosaka izveidoto objektu dzīves ilgumu:

  • Transient: objekts tiek izveidots katru reizi, kad tas tiek pieprasīts. Tas nozīmē, ka katrā pakalpojuma vai injekcijas izsaukumā tiks izveidots jauns eksemplārs.

  • Scoped: objekts tiek izveidots vienu reizi uz vienu pieprasījumu (scope). Web lietojumprogrammās tas parasti nozīmē, ka vienā HTTP pieprasījumā tiek izmantots tas pats eksemplārs, bet citā pieprasījumā — jauns.

Piemērs:

services.AddTransient<IMyService, MyService>(); // jauns objekts katram pieprasījumam
services.AddScoped<IMyService, MyService>();   // viens objekts uz HTTP pieprasījumu

Tādējādi, Scoped ir ērti saglabāt stāvokli vienā pieprasījumā, bet Transient — stateless pakalpojumiem, kur nepieciešams jauns eksemplārs katru reizi.