爲網頁和Web服務保留NHibernate ISessionFactory最簡單的方法是什麼?爲網頁和Web服務保留NHibernate ISessionFactory最簡單的方法是什麼?
我會進入Rhino Commons和Windsor這個和那個稍後。我正在尋找基本概念。
這是正確的嗎?
我一直在試圖找到如何儘可能簡單地處理ISessionFactory的指導。我還在尋找一個可以在網頁和Web服務中使用的解決方案。我見過的例子涉及到網頁,從不涉及Web服務的主題。他們首先構建一個創建ISessionFactory的Httpmodule並將其存儲在一個靜態變量中(例如,Jeffery Palermo的HybridSessionBuilder(jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/) )或者在NHibernate的夏天(www.summerofnhibernate.com請參閱Session 13中的StaticSessionManager)我也注意到,儘管ISessionFactory實現了IDisposable,但似乎沒有人會處理它,我想他們只是讓垃圾收集器處理如果IIS被回收或網站變得空閒,會發生這種情況
如果所有這些都是真的,最簡單的事情就是創建一些具有靜態變量的類,該類用於存儲ISessionFactory,這個類將被實例化並被網頁和web服務使用,每次類被實例化時,我都會檢查以確保靜態ISessionFactory變量不爲空。如果它爲空,我重新創建它。因此,我通過在web應用程序中創建一個類的實例來保持ISessionFactory的活動狀態,無論是Web頁面還是Web服務。 ISessionFactory在靜態變量中的事實意味着它由類的每個實例共享。由於會話工廠是線程安全的,這是可以的。只要我不分享ISESSIONS,我就是金。當沒有人擁有這個公共類的實例時,靜態變量不再被引用,並且垃圾回收會破壞ISessionFactory。
這是保持ISessionFactory存活的基本原理嗎?