2009-11-05 2 views
1

방금 ​​NHibernate를 사용하기 위해 많은 양의 레거시 코드를 변환했습니다. 다음으로해야 할 일은 데이터 액세스 계층 저장소와 다른 것들을 연결하는 IOC 컨테이너를 도입하는 것입니다. Castle Windsor, StructureMap, NInject, Unity 등과 같은 다양한 옵션이 있습니다. 선택이 어렵다.NHibernate가 그것을 사용하고 있기 때문에 Castle Windsor를 사용해야합니까? 그리고 이미 NHibernate를 사용하고 있습니까?

NHibernate가 이미 Castle Windsor를 사용하고 있다는 사실을 내 결정에 반영시켜야할까요?

몇 가지 잠재적 인 이점을 상상할 수 있습니다 (예 : 메모리 사용량 감소). 그러나 내가 선택할 때 IOC 컨테이너를 업그레이드 할 수있는 것보다 NHibernate가 컴파일 된 Castle 버전을 고수해야하는 것과 같은 단점이있을 수 있습니다.

생각하십니까?

답변

2

NHibernate는 IOC 컨테이너를 사용하지 않습니다. 이것은 Castle.DyanmicProxy 프로젝트를 사용하여 지연 객체를 용이하게하기 위해 프록시 객체를 생성합니다 (LinFu 또는 사용자가 원하는 경우 프록시 팩토리로 대체 할 수 있음).

귀하, 팀 및 요구 사항에 가장 적합하다고 생각되는 IOC 컨테이너를 사용할 수 있습니다.

성 윈저 (Castle Windsor)를 선호하는 한 점은 이미 세션 및 거래 관리를 담당하는 NHibernate facility입니다.

0

캐슬 IOC를 Nhibernate와 함께 사용하지 마십시오. Sessions of SessionFactory 및 IOC 실현 자체에는 멀티 스레딩 문제가 있습니다. 이 숨겨진 아키텍처 문제 때문에 대규모 프로젝트가 실패했습니다. Spring IOC 또는 다른 IOC를 사용하십시오. 성은 가볍고 단순하지만 쓸모가 없습니다.

관련 문제