2011-10-19 42 views
2

我是NHibernate和Castle Windsor的初學者,但我正在使用的當前應用程序正在使用Castle Windsor的NHibernate設施Integration level 2,即使用ISessionManager。爲什麼要使用CastleWindsor NHibernate工具中的ISessionManager?

我比較了爲了手動持久化數據和使用ISessionManager而需要做的事情,而且我並沒有真正寫出更少的代碼。我的問題是爲什麼我甚至需要ISessionManager?它爲我提供了什麼優勢?使用ISessionManager有什麼缺點?

回答

1

首先,你不必自己管理會話。在網絡環境中,您通常希望限制您的會話請求。會話管理器確保「OpenSession」的第一個調用者啓動一個新的會話,而嵌套的調用在調用「OpenSession」時獲得同一個會話。你可以通過在httpmodule中開始/關閉會話或者使用AOP模式來做同樣的事情,注意這樣做意味着你正在處理一個數據庫,自己處理多個數據庫變得更乏味。 ISessionManager處理多個數據庫就像處理一個數據庫一樣整齊。

+ 處理會話爲您 輕巧,非侵入性 簡單 輕鬆支持對多個數據庫工作 主機無關的(作品一樣好與nservicebushosting因爲它與IIS一樣)

- 多一點樣板代碼在你的DAL /知識庫/不管你叫它