2010-03-30 5 views
0

ASP.NET 웹 프로젝트 몇 가지, ASP.NET에서 실행되는 일부 WCF 서비스, 몇 가지 Windows 서비스 및 몇 가지 실행 파일과 같은 기본 코드베이스를 사용하는 일련의 응용 프로그램이 있습니다. 대부분은 단일 Visual Studio 솔루션에 있습니다.StructureMap 파티셔닝?

주입에 관한 한 다양한 응용 프로그램간에 많은 중복이 있습니다. 일반적으로 동일한 데이터베이스 연결, 동일한 구체적인 개체 등이 필요합니다.

중복으로 인해 IOMC라는 하나의 프로젝트에 내 Structure Map 레지스트리가 포함되어 있습니다. 응용 프로그램 요구 사항이 서로 다르기 때문에 이것은 별개입니다. 일부 응용 프로그램은 특정 유형을 인스턴스화 할 필요가 없습니다. 또한이 프로젝트는 솔루션의 거의 모든 프로젝트에 액세스 할 수있는 "신의회 (God Assembly)"가되고 있습니다.

  1. 제로 코드 중복
  2. 지역 변화 프로젝트 단위

에 :

제공하기 위해 StructureMap 주입을 분할하는 가장 깨끗한 방법은 무엇입니까?

답변

0

많은 공통 서비스를 포함하고 다른 모든 프로젝트에서 참조하는 "핵심"어셈블리가 있다고 가정합니다. 자체 서비스 및 공통 구성 값을 구성하는 StructureMap 레지스트리를 가질 수 있습니다. 이는 복제 문제의 대부분을 이겨내야합니다.

새 서비스를 제공하는 추가 어셈블리마다 자체 서비스를 구성하는 자체 레지스트리가 있습니다.

각 응용 프로그램에는 끌어다 놓기를 원하는 다양한 레지스트리가있는 컨테이너를 구성하는 자체 부트 스트 래퍼와 해당 응용 프로그램에 특정한 서비스 등록에 대한 재정의가 있습니다. 이는 애플리케이션 당 가변성을 제공합니다.

모든 응용 프로그램마다 고유 한 부트 스트 래퍼가 있다는 점에서 중복됩니다. 그러나 대부분의 작업은 여러 레지스트리에 위임해야합니다. 부트 스트 래퍼를 구성 파일과 같이 생각하면 복제본이 더 맛있어 야합니다.

+0

이 접근 방식은 모든 어셈블리에서 StructureMap을 참조해야 함을 의미합니다. 나는 그것을 피하고 있었지만 그 결정을 다시 검토 할 수 있습니다. – roufamatic

+0

또한 구성 파일 중복도 싫어합니다. :-) – roufamatic

+0

좋습니다, 라이브러리 어셈블리가 아직 StructureMap을 참조하고 있지 않다면 지금 시작하지 마십시오. 대신 응용 프로그램 어셈블리에 레지스트리를 보관하십시오. –