Sobes.tech
Junior — Middle

Бир процесстик контекстте бир убакта ишке ашып жаткан бир нече суроолорду кантип иштетүү жүргүзүлөт?

sobes.tech AI

AIден жооп

ASP.NET Coreдогу бир процесстик контекстте Scoped көз караштары үчүн, ар бир HTTP суроо өзүнүн Scoped кызматтар үлгүсүн алат. Бир эле учурда бир нече суроолор бир процессте аткарылып жатканда, ар бир суроого өзүнчө Scoped контейнер түзүлөт, башка суроолордон изоляцияланган.

Бул DI контейнер механизми аркылуу жетишилет, ал жаңы scope түзүп, аны аяктагандан кийин жок кылат. Ошентип, бир процесстик тиркемеде да, ар бир суроо өзүнүн Scoped кызматтар топтомун иштетип, суроолор ортосунда маалыматтык кагылышууларды алдын алат.

Мына ошондой көрүнүшү:

// Startup.csте
services.AddScoped<IMyService, MyService>();

// Ар бир суроонун иштетилиши учурунда жаңы scope түзүлөт
app.Use(async (context, next) => {
    using (var scope = app.ApplicationServices.CreateScope())
    {
        var myService = scope.ServiceProvider.GetRequiredService<IMyService>();
        // myService колдонуу суроо чегинде
        await next();
    }
});

Чындыкта, ASP.NET Core автоматтык түрдө ар бир HTTP суроого scope түзөт, ошондуктан иштеп чыгуучу аны кол менен түзүүгө муктаж эмес.