MVC IoC组件生活方式PerWebRequest

时间:2009-07-21 19:19:10

标签: model-view-controller inversion-of-control components

当我有人向我提到IoC容器时,我才开始对MVC感到满意,现在我觉得我已经摔倒了几千英尺,需要再次爬上去。我很想忽略它们,但后来我读到了Component Lifestyle。这对我来说似乎是一件大事,正如所解释的,如果我的存储库Lifestyle设置为 Singleton 而不是 PerWebRequest ,那么对数据库更新的未经修改的更改可能会泄漏请求。

所以我的问题是......有没有办法在不使用IoC容器的情况下创建 Component Lifestyle 效果,或者这是唯一的选择?

1 个答案:

答案 0 :(得分:0)

您始终可以将实现创建为Singleton。但是,当谈到存储库时,我认为没有必要。这不是使用IoC的真正目的。使用IoC将代码的用户与实现本身分离。它使测试更容易,因为您可以根据需要交换内容。此外,在我的情况下,我发现它也非常有用于其他目的。以缓存为例。在我的本地开发中,我使用Lucene.NET为我的缓存实现提供基于磁盘的缓存。然后,当我推送到我的开发和登台平台时,我使用标准的.net缓存实现。然后,当我推向生产时,我可能会使用Velocity或MemCached实现。因为我使用的是StructureMap(我首选的IoC容器),所以我不需要做任何想要从A点到B点的事情。

似乎Component Lifestyle更多的是设计决策,而不是IoC决策。这里提到的用于管理对象生命的所有三种方法都可以在没有IoC的情况下完成......但这可能是IoC的一个有趣的副作用(在某些情况下)。

相关问题