2

구조체 맵을 처음 사용하려고합니다. 전에 ioc 컨테이너를 사용했지만 항상 xml config를 사용했습니다. 구조체 맵은 코드를 통해 구성을 사용하므로 (XML에서도 가능하지만 대부분의 예제는 코드를 통해 구성 설정을 사용합니다) 참조와 관련된 몇 가지 문제가 있습니다. 다음의 예 (이 아닌 진짜)와구조 맵 및 참조, 모범 사례 란 무엇입니까?

하자 일 :

3 어셈블리. 이 기록에 대한 코드를 포함하고 있기 때문에

데이터 영역 BusinessLayer 서비스

BusinessLayer는 (그래서 데이터를 검색 할 수 있습니다) 데이터 영역을 참조 데이터 영역과 BusinessLayer 모두 서비스 어셈블리를 참조합니다.

로그 구성 요소를 변경할 수 있도록 로그 구성 요소를 StructureMap에서 관리하려고합니다.

비즈니스 계층에는 StructureMap에서 제공하는 일부 구성 요소가 있습니다.

내 문제가되었습니다.

어디에서 구조 맵을 구성합니까?

BusinessLayer에 배치하면 DataLayer에서 Log 구성 요소를 사용할 수 없습니다 (비즈니스 참조가 순환 참조에서 해결되기 때문에). BusinessLayer에는 일부 구성 요소가 있고 (비즈니스 계층에는 서비스 어셈블리에 대한 참조가 있으므로) Services 프로젝트에 배치 할 수 없습니다.

나는 내가 충분히 자신을 설명했기를 바랍니다. 여기서 가장 중요한 문제는 StructureMap을 구성하기 전에 어셈블리에 대한 참조가 필요하다는 것입니다. 작업하기에 다소 문제가 있음을 발견했습니다. 내가 잘못하고 있니?

답변

3

컨테이너 구성은 프레젠테이션 계층 (웹 사이트, 웹 서비스, 콘솔 응용 프로그램, Windows 응용 프로그램 또는 Windows 서비스)의 최상위에 있어야합니다. 필요한 곳 ​​어디에서든지 필요한 모든 것을 주입 할 수 있습니다.

+0

소리가 잘 들린다.하지만 "최상위 레이어"가 여러 개인 경우 어떻게해야합니까? 예 : 내 프로젝트에서 나는 셰어 포인트 (UI 없음) 및 웹 프로젝트 (일부 SharePoint 프로젝트)에서 일부 웹 파트를 실행하는 워크 플로를 가지고 있습니다. – user392471

+0

이 워크 플로가 실행되는 방식에 따라 다릅니다. 컨테이너 이상이 필요할 수 있습니다. 일부 웹 서비스가 포함 된 웹 프로젝트가 있습니다. 나는 웹 애플리케이션을위한 컨테이너와 웹 서비스를위한 두 개의 컨테이너를 가지고있다. 이 콘테이너들은 일반적인 것들 (로깅 등)을 담고있는 공통 콘테이너의 어린이들 (Unity는 어린이 컨테이너를 허용하고 StructrureMap에 대해서는 모른다)이다. – onof

+1

감사합니다. 내 "주요"질문의 암시 적 질문은 여러 컨테이너를 갖는 것이 "멋지다"는 것입니다. 나는 항상 공통 설정을 포함하기 위해 레지스터를 사용할 수있다. – user392471

0

프로세스 수준의 부트 스트랩 방법에 프로그래밍 방식의 구성 (IoC 또는 기타)을 배치합니다. 따라서 클라이언트/서버 시스템에서 클라이언트 프로세스는 자신이 필요로하는 모든 구성에 대해 자체 부트 스트랩을 가지며 서버 프로세스는 필요한 모든 구성에 대해 별도의 부트 스트랩 메소드를 갖게됩니다 (재사용 된 코드 일 수도 있고 매우 다른 요구 사항 일 수도 있음)). 예를 들어 클라이언트 부트 스트랩은 DAL 구성을 알 필요가 없으며 서버 부트 스트랩은 UI 구성에 대해 알 필요가 없습니다.