.net 非Web应用程序的带StructureMap的NHibernate

.net 非Web应用程序的带StructureMap的NHibernate,.net,nhibernate,structuremap,.net,Nhibernate,Structuremap,使用StructureMap为非Web应用程序(如Windows服务)注入和管理NHibernate会话/事务的最佳实践是什么 在web环境中,我们使用StructureMap的混合生命周期使用PerRequest会话管理生命周期,但对于Windows服务,我无法处理IDisposable UnitOfWork 谢谢。Ayende很好地总结了如何在桌面应用程序中处理NHibernate 使用StructureMap,我首先手动创建ISessionFactory。然后声明要在所有ISessionF

使用StructureMap为非Web应用程序(如Windows服务)注入和管理NHibernate会话/事务的最佳实践是什么

在web环境中,我们使用StructureMap的混合生命周期使用PerRequest会话管理生命周期,但对于Windows服务,我无法处理IDisposable UnitOfWork


谢谢。

Ayende很好地总结了如何在桌面应用程序中处理NHibernate

使用StructureMap,我首先手动创建ISessionFactory。然后声明要在所有ISessionFactory实例上使用的实例:

        For<ISessionFactory>().Use(sessionFactory);
For().Use(sessionFactory);
因此,您可以让屏幕自己创建和处理会话。所有会话必须彼此隔离,以避免内存问题,这一点很重要。这一点在文章中有完整的解释


通过这种方法,并根据需要很好地使用IStatelessSession,我减少了WPF/StructureMap/NHibernate应用程序中的许多问题。

您的Windows服务是如何工作的?它是否在计时器事件中轮询并运行代码?是否创建新线程来处理工作?Windows服务承载一些WCF服务,并处理一些定时后台任务