Насколько я понимаю, при использовании встроенного внедрения зависимостей консольное приложение .NET Core потребует от вас создания и управления всеми областями самостоятельно, тогда как приложение ASP.NET Core по умолчанию создает и управляет областью HttpRequest
. через определенные промежуточные программы.
С помощью ASP.NET Core вы можете по желанию создавать собственные области и управлять ими, вызывая CreateScope()
для тех случаев, когда вам нужны службы, находящиеся за пределами HttpRequest
.
Понятно, что вызов IServiceScopeFactory.CreateScope()
будет каждый раз создавать новый IServiceScope
; Однако вызывает ли метод вызова IServiceProvider.CreateScope()
каждый раз новый IServiceScope
каждый раз?
По сути, есть существенная разница между следующими способами создания области в консольных приложениях ASP.NET Core и .NET Core:
public class Foo()
{
public Foo(IServiceProvider serviceProvider)
{
using(var scope = serviceProvider.CreateScope())
{
scope.ServiceProvider.GetServices<>();
}
}
}
и
public class Bar()
{
public Bar(IServiceScopeFactory scopeFactory)
{
using(var scope = scopeFactory.CreateScope())
{
scope.ServiceProvider.GetServices<>();
}
}
}