2012-10-09 2 views
2

.Net 응용 프로그램에서 제어 반전을 사용하는 경우 호스트 응용 프로그램에서 데이터 계층에 대한 참조를 추가 할 수 있습니까?.Net 및 어셈블리 참조로 제어 반전

  • MyApp.Data (EF 클래스)
  • MyApp.Business (서비스 공장/저장소)
  • MyApp.Services.MyWCFService (호스트)
  • :

    나는 다음과 같은 개별 프로젝트를 말해봐

  • MyApp.Presentation.MVC (호스트)
  • MyApp.Business.Tests (호스트)

이 상황에서 필자는 역사적으로 MyApp.Business와 호스트 응용 프로그램 사이에 IoC를 사용하여 각 서비스 팩토리/저장소에 대한 인터페이스를 만들고 호스트 응용 프로그램에서 DI를 사용했습니다. 그런 다음 각 응용 프로그램에는 비즈니스 팩토리의 자체 구현을 주입 할 수있는 선택권이 있습니다. 내 호스트 애플 리케이션은 오직 비즈니스 계층에만 의존하고 MyApp.Data 어셈블리를 참조 할 필요가 없으므로이 문제는 결코 발생하지 않았습니다. MyApp.Business는 일반적으로 MyApp.Data 어셈블리에 대한 모든 호출을 처리합니다. 결과를 복합 비즈니스 오브젝트로 렌더링합니다).

최근 프로젝트에서 달성하고자하는 것은 모든 레벨에서 IoC를 사용하는 것입니다. 즉 MyApp.Data에서 인터페이스를 만드는 것이므로 MyApp.Business에 조롱과 적절한 단위 테스트를 적용 할 수 있습니다. 이를 달성하는 유일한 방법은 호스트 응용 프로그램의 MyApp.Business 및 MyApp.Data에 대한 어셈블리 참조를 만든 다음 DI를 사용하여 MyApp.Data 및 MyApp.Business 구현을 모두 주입하는 것입니다.

이것은 기존의 nTier 응용 프로그램에서 배웠던 모든 것과는 반대되는 개념입니다. 모든 작업을 수행하는 DI라는 것을 알고 있지만 참조는 기본적으로 해결 방법입니다. 이것이 올바른 접근 방법이라고 가정 할 때 나는 맞습니까? 더 좋은 방법이 있습니까?

답변

3

요약하면 : 예, 앱의 각 항목과 애플리케이션의 일부를 애플리케이션의 기본 진입 점에서 참조해도됩니다.

개념은 Composition Root입니다.

+0

읽어 주셔서 감사합니다. – Spikeh