Sobes.tech
Junior — Middle

Чӣ гуна коркарди чанд дархости ҳамзамон дар доираи контексти Scoped якпроксесӣ амалӣ мешавад?

sobes.tech AI

Ҷавоб аз AI

Дар контексти як процеси бо як scope барои такягоҳҳо дар ASP.NET Core, ҳар дархости HTTP худро намунаи хидматҳо бо scope-ро мегирад. Ҳангоми иҷрои як вақт чанд дархост дар як процес, барои ҳар дархост контейнери Scope-ро ҷудо месозад, ки аз дигарон ҷудо аст.

Ин тавассути механизми контейнери 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 автоматӣ scope-ро барои ҳар дархости HTTP месозад, бинобар ин, таҳиягар одатан онро дастӣ намесозад.