我应该使用Castle Windsor,因为NHibernate正在使用它,我已经在使用NHibernate了吗?

时间:2009-11-05 00:06:03

标签: ioc-container

我刚刚完成转换大量遗留代码以使用NHibernate。我要做的下一件事是引入一个IOC容器来连接数据访问层存储库和其他类似的东西。目前有各种各样的选择 - 温莎城堡,StructureMap,NInject,Unity等;选择很困难。

我是否应该让NHibernate已经使用Castle Windsor影响我的决定呢?

我可以想象一些潜在的好处 - 例如降低内存使用率。但是可能存在缺点,例如必须坚持使用NHibernate编译的Castle版本,而不是在我选择时能够升级IOC容器。

思想?

2 个答案:

答案 0 :(得分:2)

NHibernate不使用任何IOC容器。它使用Castle.DyanmicProxy项目来创建代理对象以方便延迟加载(尽管如果您愿意,可以用LinFu或您自己的代理工厂替换它。)

您可以使用您认为最适合您,您的团队和您的要求的任何IOC容器。

赞成Castle Windsor的一点是,已经有NHibernate facility来处理会话和交易管理。

答案 1 :(得分:0)

不要将Castle IOC与Nhibernate一起使用。 SessionFactory的Sessions和IOC实现本身存在多线程问题。由于这种隐藏的架构问题,我们失败了一个大项目。使用Spring IOC或其他IOC。 城堡很轻,很简单但没用。