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.