在ASP.NET Core中的IoC服务容器的上下文中有哪些请求?
我将在这些教程的帮助下学习ASP.NET Core 。我遇到了以下摘录:
范围:IoC容器将为每个请求创建一次指定服务类型的实例,并将在单个请求中共享。
我不明白我们在这里谈论什么要求?这是否意味着每次后端控制器处理请求时,都会创建IoC容器提供的服务的新实例并将其隐式放置在类(代表控制器)的字段中?还是意味着其他类型的请求?
换句话说,如果我们有:
public void ConfigureServices(IServiceCollection services)
{
services.Add(new ServiceDescriptor(typeof(ILog), typeof(MyConsoleLogger), ServiceLifetime.Scoped));
}
public class HomeController : Controller
{
ILog _log;
public HomeController(ILog log)
{
_log = log;
}
public IActionResult Index()
{
_log.info("Executing /home/index");
return View();
}
}
将我们拥有的不同实例ILog
的_log
请求被处理,每次HomeController
控制器?
是的,将为每个HTTP请求创建一个新对象。这对于不是线程安全的有状态依赖关系很有用。臭名昭著地要求以这种方式对待实体框架对象上下文。
如果依赖项是无状态的或线程安全的,则可以为它配置另一个生存期,以便在应用程序的生存期内仅创建和重用一个对象。
像上面这样的控制器HomeController
总是根据请求创建的。IIRC,您无法更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句