2010-12-23 6 views
1

WCF 서비스 (IIS에서 호스팅 됨)에 Ninject를 추가하고 있습니다. 내 NHibernate 저장소 클래스의 인스턴스를 자동으로 인스턴스화 할 WCF 서비스를위한 것입니다.WCF, Ninject 및 수명주기

원래 Castle (및 이후 Ninject)을 사용하여 ASP.NET MVC 클라이언트에서 해당 객체를 인스턴스화하고이를 서비스 클래스에 전달했습니다. 이 경우 범위는 PerWebRequest (성) 또는 InRequestScope (Ninject)입니다. NHibernate 세션은 저장소가 삭제되었을 때 커밋 될 트랜잭션과 함께 암시 적으로 생성됩니다.

클라이언트가 서비스를 새로 시작하거나 닫음으로써 세션/트랜잭션의 수명을 암시 적으로 제어하도록함으로써 이와 동일한 접근 방식을 유지하고자합니다.

기존 Ninject 범위 방법 중 하나 (InThreadScope 또는 InRequestScope)가 이와 같은 방식으로 작동합니까? 이 목표를 달성하기위한 또 다른 방법이 있습니까?

답변

0

클라이언트 을 명시 적으로 개체의 수명을 제어하게 할 것입니다. 그러한 객체를 삽입하지 말고 그러한 객체를 생성 할 수있는 팩토리를 삽입하십시오. 이것은 principle of least surprise을 따릅니다. 자세한 내용은 this SO answer을 참조하십시오.