当有人向我提到IoC容器时,我刚开始对MVC感到舒服,现在我觉得自己掉了几千英尺,需要再爬起来。我很想忽视他们,但后来我读到了他们的生活方式。对我来说,这似乎是一件大事,正如我所解释的,如果我的存储库生活方式被设置为Singleton而不是PerWebRequest,对数据库更新的未实现的更改可能会跨请求泄漏。
因此,我的question...is有一种方法可以在不使用IoC容器的情况下创建组件生活方式,或者这是唯一的选择吗?
发布于 2009-07-21 19:28:01
您可以始终将实现创建为Singleton。然而,当谈到一个仓库,我不认为有必要。然而,这并不是使用IoC的真正目的。使用IoC将代码的用户与实现本身解耦。它使测试更容易,因为您也可以根据需要交换进出的东西。而且,在我的例子中,我发现它对于其他目的也非常有用。以缓存为例。在本地开发中,我使用Lucene.NET为我的缓存实现提供一个基于磁盘的缓存。然后,当我推进到我的开发和暂存平台时,我使用标准的.net缓存实现。然后,当我推动生产时,我可能会使用速度或MemCached实现。因为我使用的是StructureMap (我喜欢的IoC容器),所以我不需要做任何花哨的事情就可以从A点到B点。
看起来,成分生活方式更像是一个设计决策,而不是一个IoC决策。这里提到的管理对象生命周期的所有三种方法都可以在没有IoC...but的情况下完成,这可能是IoC的一个有趣的副作用(在某些情况下)。
https://stackoverflow.com/questions/1161187
复制相似问题