【问题标题】:Using Unity IOC Container in ASP.net solution在 ASP.net 解决方案中使用 Unity IOC Container
【发布时间】:2012-08-29 11:20:19
【问题描述】:
我们在 ASP.Net 解决方案中使用 Microsoft 的 Unity IOC 容器。
在顶层之一中,我们使用 RegisterInstance 方法。然后我们用 Resolve 方法把它放回更低的位置。
在查看另一个问题时,我们看到 ASP.Net 具有线程敏捷性,即请求可以跳转线程。
所以问题是如果我们在一个线程上注册一个实例,并且请求在我们解析实例之前跳转线程,我们会取回正确的实例吗?
【问题讨论】:
标签:
c#
asp.net
multithreading
inversion-of-control
unity-container
【解决方案1】:
如果您在注册它的同一个容器(或其子容器)上解析您的类型,您将获得正确的实例。
据我所知,没有必要在每次请求时都在容器中注册类型,这通常在应用程序启动时完成。
【解决方案2】:
基于this
[...] Resolve、ResolveAll 和 BuildUp 都是线程安全的。好像
我们在文档中错过了它。
容器上的其他方法都不是线程安全的,所以如果
您将要配置容器,您需要进行锁定。
此外,如果您有一个线程配置和另一个线程
解决了,会有线程问题。
AFAIK,您的方法是正确的,您不必担心在 ASP.NET 应用程序中获得不正确的实例。