温莎注册儿童集装箱能见度

时间:2010-10-25 17:22:04

标签: .net dependency-injection inversion-of-control castle-windsor

我有一些(有点)单身人士存在于三个背景下:

  1. 每个AppDomain

  2. Per HttpApplication

  3. 每个Web请求

  4. 现在,我正在为每个HttpApplication创建一个子容器,并为每个Web请求创建另一个子容器。这是必要的,因为一些组件应该实际上在三个层中共享单例实例。出于安全性和其他原因,某些注册实际上不应该共享单例(每个容器一个)。

    是否有人建议如何实施此操作或如何限制容器层次结构中注册的可见性?

    感谢。

2 个答案:

答案 0 :(得分:2)

斯图尔特说,生活方式是实现这一目标的正确延伸点。儿童容器不是必需的。每个Web请求在Windsor中都是开箱即用的,而IIRC的Singleton生活方式(默认的)可以在每个appdomain中运行。 per-HttpApplication生活方式在Castle.Windsor.Lifestyles contrib project中实现。

答案 1 :(得分:1)

您是否尝试过使用lifestyles来解决此问题? Singleton和PerWebRequest生活方式的组合可以满足您的要求,而无需子容器。