2010-05-18 69 views
2

使用StructureMap爲非Web應用程序(如Windows服務)注入和管理NHibernate的會話/事務的最佳實踐是什麼?NHibernate與非Web應用程序的StructureMap

在web環境裏,我們使用使用StructureMap的混合生命週期PerRequest會話管理的生命週期,但對於一個Windows服務,我不能處理的IDisposable的UnitOfWork ...

感謝。

+1

您的Windows服務如何工作?它是否輪詢並在計時器事件中運行代碼?你是否創建了一個新線程來處理工作? – 2010-05-18 12:56:56

+0

Windows服務託管一些WCF服務,並處理一些定時後臺任務 – 2010-05-19 08:27:47

回答

2

Ayende給出了一個很好的總結如何在桌面應用程序中處理NHibernate here

使用StructureMap,我首先手動創建ISessionFactory。然後聲明實例要在所有ISessionFactory實例使用:

 For<ISessionFactory>().Use(sessionFactory); 

因此,你離開屏幕自己創造和他們的會話處理。所有會話都相互隔離以避免內存問題,這一點很重要。這在文章中有詳細解釋。

使用這種方法,並根據需要使用IStatelessSession,我減少了我在WPF/StructureMap/NHibernate應用程序中遇到的很多問題。