通过嵌套容器实现Web API,DI和对象生命周期?

时间:2012-10-25 14:57:27

标签: dependency-injection structuremap asp.net-web-api

好的,我将StructureMap连接到我的Web Api应用程序(大量示例如何在StackOverflow和Internet上的其他地方执行此操作)。我对Web Api中对象生命周期维护的理解是它是通过嵌套容器完成的。

对于通过嵌套容器维护对象生命周期的整个想法,Raven的会话对象必须在子容器中创建为瞬态单例。现在我在父容器中定义了IDocumentStore,并且作为单例定义。 IDocumentSession也在父容器中定义,但作用域为HttpContext。当请求进入时,调用BeginScope(),创建嵌套容器,但其中的IDocumentSession对象是从父项继承而不是创建的。

我不明白这是怎么回事。如果未在子容器中将对象创建为临时单例,而是从父级继承,则在放置嵌套容器时它将返回到父级。然后这就打败了整个想法。另一方面,如果要在嵌套容器中创建会话作为瞬态单例,那么如何实现呢?如何验证此类设置的正确性?

1 个答案:

答案 0 :(得分:1)

  

如果我将IDocumentSession设置为Per Web Request那么为什么需要   首先是嵌套容器?

在这种情况下不需要嵌套容器。

一般来说,对嵌套容器的需求甚至是值得怀疑的。在下一版本的温莎城堡中,甚至the designer of Castle Windsor(一个支持子容器的容器)is considering to remove support for child containers