2010-05-18 5 views
2

Windows 서비스와 같은 비 웹 응용 프로그램을 위해 StructureMap을 사용하여 NHibernate를위한 Session/Transaction을 주입하고 관리하는 가장 좋은 방법은 무엇입니까? 웹 맥락에서 비 웹 응용 프로그램을위한 StructureMap을 가진 NHibernate

, 우리는 StructureMap의 하이브리드 라이프 사이클을 사용하여 PerRequest 세션 관리 라이프 사이클을 사용하지만 Windows 서비스에 대한, 내가는 IDisposable UnitOfWork에 ...

감사를 처리 할 수 ​​없습니다.

+1

Windows 서비스는 어떻게 작동합니까? 타이머 이벤트에서 폴링하고 코드를 실행합니까? 작업을 처리 할 새 스레드를 만드시겠습니까? –

+0

Windows 서비스 호스트에서 일부 WCF 서비스를 호스트하고 시간이 초과 된 백그라운드 작업을 처리합니다. –

답변

2

Ayende는 데스크톱 응용 프로그램에서 NHibernate를 처리하는 방법에 대한 좋은 요약을 제공합니다 here.

StructureMap을 사용하면 먼저 수동으로 ISessionFactory를 만듭니다. 그런 다음 모든 ISessionFactory 인스턴스에 사용되는 인스턴스를 선언 :

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

따라서, 당신은 자신이 만들고 자신의 세션을 처리 할 수있는 화면을 둡니다. 메모리 문제를 피하기 위해 모든 세션이 서로 격리되어 있어야합니다. 이것에 대해서는이 기사에서 자세히 설명합니다.

필요에 따라이 접근 방식을 사용하고 IStatelessSession을 잘 사용하면 WPF/StructureMap/NHibernate 응용 프로그램에서 많은 문제를 해결할 수 있습니다.

관련 문제