2009-11-05 74 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。 城堡很輕,很簡單,但沒用。

相關問題