我试图了解DI究竟是如何运作的。 我目前正在使用Windsor作为DI容器。我使用它在代码中动态加载我的服务而不直接引用。但是我已经改变了行为,并希望在使用DI的实例mgmt上了解更多信息。
我有一个web app项目,这里是一个使用PerCall作为instancemode的WCF服务。这意味着,新的实例/调用。在这个WCF中,我调用一个服务(通过DI加载),这个服务调用另一个服务(再次通过DI加载)。 WCF是appdomain中的一个新实例,但是服务呢。他们也是新的例子?这个DI容器是否在所有WCF实例之间共享,并且此容器中的服务也是单个实例吗?
任何人都可以澄清吗?
答案 0 :(得分:1)
当你的描述如此含糊时,很难回答。但有几点:
组件不应该''共享''容器。组件不应该引用容器。
每个应用程序都有一个根容器实例。在webapp中,您通常会在ApplicationStart中实例化并配置它,并让它从那里完成它的工作。
要小心不要依赖于生命较短的组件。例如,单例组件不应依赖于瞬态组件。