在ASP.net解决方案中使用Unity IOC容器

时间:2012-08-29 11:20:19

标签: c# asp.net multithreading inversion-of-control unity-container

我们在ASP.Net解决方案中使用Microsofts Unity IOC容器。

在其中一个顶层中,我们使用RegisterInstance方法。然后我们使用Resolve方法将其降低。

在查看另一个问题时,我们看到ASP.Net具有线程敏捷性,即请求可以跳转线程。

所以问题是如果我们在一个线程上注册一个实例,并且在我们解析实例之前请求跳转线程,我们会回到正确的实例吗?

2 个答案:

答案 0 :(得分:5)

  1. 如果你在同一个容器上解析了你的类型(或者它的孩子),那么你将获得正确的实例。

  2. 据我所知,没有必要在每个请求中注册容器中的类型,这通常是在应用程序启动的某个地方完成的。

答案 1 :(得分:3)

基于this

  

[...] Resolve,ResolveAll和BuildUp都是线程安全的。好像   我们在文档中错过了它。

     

容器上的其他任何方法都不是线程安全的,所以如果   你要配置容器,你需要做锁定。   此外,如果您有一个线程配置和另一个线程   解决,会有线程问题。

AFAIK,您的方法是正确的,您不必担心在ASP.NET应用程序中获取不正确的实例。