2010-01-14 4 views
1

구성 파일을 읽는 프로젝트에 Unity IOC를 구현하는 데 문제가 있습니다. SomeOther 응용 프로그램은 ClassLibraryA를 참조 할 것, 예를 들면 다음과 같습니다 내 상황에서 Unity Container IOC를 사용/구성하는 방법

내가

1) ClasslibraryA

참조 ClasslibraryA

3) 윈폼 응용 프로그램을 참조 2) ClasslibraryB ClasslibraryB

참고있는 것입니다 . 웹 서비스.

ClasslibraryA는 사용되는 위치에 따라 IOC 용으로 구성해야합니다. 예. IDataSource는 웹 서비스에서 호출되고 로컬 응용 프로그램에서 호출 될 때 달라집니다.

ClasslibraryB는 주 응용 프로그램 (이 경우에는 winforms 응용 프로그램)에 삽입되도록 자체 종속 집합을 갖습니다. ClasslibraryB는 루프에서 많은 ClasslibraryA 객체를 인스턴스화합니다.

Winforms 앱에는 ClassLibraryB의 의존성 구현의 구체적인 구현이 포함되며 Container.Configure는 여기에서 호출해야합니다.

내 질문은,

언제 어디서 나는 Container.Configure는 응용 프로그램에서 호출 할 수 있습니까?
모든 하위 라이브러리 계층/하위 레이어에 하위 컨테이너가 필요합니까?
classlibraryB 또는 winforms가 ClasslibraryA에 대한 구체적인 클래스를 구현하여 classlibraryA에 삽입해야합니까? 각 계층/계층의 IOC 구성을 구성 파일의 다른 "컨테이너"이름으로 그룹화해야합니까?

답변

3

각 응용 프로그램은 별도의 컨테이너을 소유하며 해당 컨테이너 인스턴스를 구성해야합니다. 구성 및 호출 해결은 응용 프로그램의 진입 점에 최대한 가깝게 수행되어야합니다. 이를 구성 루트이라고합니다.

Windows Forms 응용 프로그램은 부트 스트래핑 코드에서 컨테이너를 소유, 구성 및 해결해야합니다. ClassLibraryA를 사용하는 다른 응용 프로그램도있을 수 있습니다.

웹 서비스는 다른 컨테이너를 소유하고 필요에 맞게 구성해야합니다. Windows Forms 응용 프로그램에 대해서는 아무 것도 모릅니다.여기

구성 성분 뿌리에 대한 자세한 내용은 다음과 같습니다

모든 라이브러리 그래서 당신은 어떤 컨테이너를 사용할 수있는 완전히 DI 컨테이너에 얽매이지되어야한다 (그리고 모든 컨테이너 인스턴스)를 사용하여 모든 종속성을 연결합니다.

더 자세한 내용은 여기를 참조하십시오 : 당신이 알다시피

는 이러한 일반 원칙 및 전반적인 DI에 적용 - 다만 유니티에.

0

앱의 맨 처음에 Container.Configure를 호출해야하지만, ClassLibraryA 아마도 insantiate 호출 될 때의 WebMethod를 가진 수동으로 의존성을 받아야한다 (또는 인스턴스에 대한 IOC 문의) 적당한 유형

관련 문제