Sobes.tech
Junior — Middle

Asılılıq İnjeksiyası kontekstində Scoped obyektlərinin sahəsi ilə Transient arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

C#-də Dependency Injection kontekstində, Scoped və Transient sahələri yaradılan obyektlərin həyat müddətini müəyyən edir:

  • Transient: obyekt hər dəfə tələb olunduqda yenidən yaradılır. Bu, hər xidmət çağırışında və ya inyeksiyada yeni nümunənin yaradılacağı deməkdir.

  • Scoped: obyekt bir dəfə, bir sorğu (scope) müddətində yaradılır. Veb tətbiqlərdə, bu adətən, eyni HTTP sorğusu daxilində eyni nümunənin istifadə olunması, lakin başqa bir sorğu üçün yeni nümunənin yaradılması deməkdir.

Nümunə:

services.AddTransient<IMyService, MyService>(); // hər sorğuda yeni obyekt
services.AddScoped<IMyService, MyService>();   // HTTP sorğusu üçün bir obyekt

Beləliklə, Scoped, bir sorğu daxilində vəziyyəti saxlamaq üçün əlverişlidir, Transient isə stateless xidmətlər üçün, hər dəfə yeni nümunəyə ehtiyac duyulduqda istifadə olunur.