2009-11-05 54 views
1

我刚刚完成转换大量的遗留代码以使用NHibernate。接下来我要做的是引入一个IOC容器来连接数据访问层存储库和其他类似的东西。目前有多种选择 - Castle Windsor,StructureMap,NInject,Unity等;选择很困难。我应该使用Castle Windsor吗?因为NHibernate使用它,而且我已经在使用NHibernate了?

我应该让NHibernate已经使用Castle Windsor的事实影响我的决定吗?

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

想法?

回答

2

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

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

有一点赞成温莎城堡的是,已经有一个NHibernate facility为您负责会话和交易管理。

0

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