Sobes.tech
Junior — Middle

Bir protsess doirasidagi bir vaqtning o'zida bajarilayotgan bir nechta so'rovlarni qanday ishlash amalga oshiriladi?

sobes.tech AI

AIdan javob

ASP.NET Core'da Scoped bağımlılıkların tek işlemli bağlamında, hər HTTP sorğusu öz Scoped xidmət nümunəsini alır. Eyni zamanda bir neçə sorğu eyni prosesdə icra olunarkən, hər sorğu üçün ayrı bir Scoped konteyner yaradılır və digərindən izolyasiya olunur.

Bu, DI konteyner mexanizmi vasitəsilə həyata keçirilir; bu mexanizm, sorğunun başlanğıcında yeni bir scope yaradır və onu tamamlandıqda məhv edir. Beləliklə, hətta tək prosesli tətbiqdə belə, hər sorğu öz Scoped xidmətlər toplusu ilə işləyir və bu, sorğular arasında məlumat münaqişəsini qarşısını alır.

Təxminən belə olur:

// Startup.cs-də
services.AddScoped<IMyService, MyService>();

// Hər sorğu işlənərkən yeni scope yaradılır
app.Use(async (context, next) => {
    using (var scope = app.ApplicationServices.CreateScope())
    {
        var myService = scope.ServiceProvider.GetRequiredService<IMyService>();
        // Sorğu çərçivəsində myService istifadə
        await next();
    }
});

Əslində, ASP.NET Core hər HTTP sorğusu üçün avtomatik olaraq scope yaradır, buna görə də inkişaf etdiricinin onu əl ilə yaratmasına ehtiyac yoxdur.