2010-06-19 8 views
2

의존성 주입 (Unity)을 사용하고 싶습니다. 현재 프로젝트를 설정하는 방법에 대해 생각하고 있습니다. (작업중인 멋진 데모입니다.)종속성 주입 - 완전히 분리 된 구성 요소의 모범 사례?

따라서 모든 구성 요소를 완벽하게 분리하고 더 이상 어셈블리 종속성이 없으면 ".Contracts"어셈블리 또는 유사한 어셈블리를 만들고 거기에 모든 인터페이스와 공유 데이터 구조를 배치하는 것이 좋습니다.

이 방법을 가장 좋은 방법이라고 생각하거나 잘못된 길을 가고 있습니까? 로 급격히 가능한 디커플링 내가 모든 구성 요소를 원

전체 테스트 가능성을 더 이상, 어떤 구성 요소가 지금까지 구체적인 구현에 직접 이야기하지합니다 모든 것을 주입 :

내가 달성하고 싶다 무엇.

답변

3

가장 중요한 첫 번째 단계는 구체적인 구현보다는 인터페이스를 프로그래밍하는 것입니다.

DI를 사용하는지 여부에 관계없이 응용 프로그램이 느슨하게 결합됩니다.

+0

예, 모든 인터페이스를 단일 어셈블리/라이브러리/프로젝트에 함께 넣으시겠습니까? – StormianRootSolver

+0

다릅니다. 구성 요소가 다른 프로젝트에서 확실히 사용되는 경우 예. 그렇지 않다면 동일한 프로젝트 내에서 아직 합리적인 구조가 좋습니다. – Finglas

+0

고맙습니다. 나는 내 결정을 내렸다. 나는 당신의 제안을 따르고 여러 어셈블리가 사용하는 모든 인터페이스를 배치하는 .Contracts 프로젝트를 만들 것이다. :-) – StormianRootSolver

1

다른 어셈블리에서는 인터페이스를 분리하지 않겠습니다. 도메인의 일부인 것과 상호 작용해야하는 경우 분리해야하는 이유는 무엇입니까? 인터페이스의 예로는 저장소, 전자 메일 발신자 등이 있습니다. 도메인 개체가있는 모델 어셈블리가있는 경우가 있습니다. 이 어셈블리는 인터페이스를 구현하고, 구현은 모델을 구현하기 위해 분명히 모델을 참조합니다.

+0

답장을 +1하십시오! :-) 그러나 일하는 총 이방인에 따라 수업에 대해 어떻게 생각하십니까? 내 말은, 인쇄 시스템처럼 동일한 구성 파일 접근 자 클래스에 의존하는 서비스 구성 요소가 있다고 상상해보십시오. 이 경우 너무 많은 참조를 하나도 소개하지 않겠습니까? – StormianRootSolver