도메인 계층 (모듈, 모델, 엔티티, 도메인 서비스 등)의 모든 인터페이스를 인프라 계층 내에서 그룹화하는 것이 합리적입니까? 그렇지 않은 경우이 모든 것을 공유 라이브러리에 그룹화하는 "공유 된"프로젝트/구성 요소를 만드는 것이 합리적입니까? 결국, "인프라 계층"의 정의에는 "도메인, 응용 프로그램 및 UI 계층에 대한 공유 라이브러리"가 포함됩니다.DDD : 도메인 인터페이스를 유지할 인프라는 어디입니까?
저는 DDD 레이어 주위에 코드베이스를 설계하려고합니다 : UI, 응용 프로그램, 도메인, 인프라. 이것은 4 개의 프로젝트를 존중하게 만듭니다. 요점은 인프라 계층을 도메인 계층에서 참조한다는 것입니다. 그러나 도메인 계층 프로젝트에서 인터페이스를 정의하고 IPost에 대해 말하면 IPostRepository.Save (IPost post) 메서드를 정의 할 때 Infrastructure 프로젝트에서 Domain Layer 프로젝트를 참조해야 할 때 circulur 참조를 갖습니다. . 따라서 "공유 라이브러리의 모든 인터페이스 정의"에 대한 아이디어입니다.
리포지토리는 개체를 저장해야한다고 생각해서는 안됩니다 (IPostRepository.Save (IPost 게시)) 대신 개체의 매개 변수를 기대합니다. 그러나 Save()에서는 긴 매개 변수 집합이 될 수 있습니다. 이 객체가 지나치게 복잡지고 때 표시 이상적인 상황이 될 수 있으며, 추가 가치 개체는 그것을 들여다해야합니다.
생각을?
뛰어난 Geobarteam. "도메인"의 인터페이스 정의, 리포지토리는 별도의 어셈블리 (MySqlProviver, MsSqlProvider, XmlProvider 등) 및 일부 유형의 IOC 컨테이너 (Castle Windsor가 좋아)를 App 계층에서 연결하는 데 사용합니다. – eduncan911
ASP.NET MVC의 경우 실제로 컨트롤러를 UI에 쉽게 주입 할 수 있습니다 (UI 레이어)에서 성 Windosr. 스티븐 Sanderson은 ASP.NET MVC 프레임 워크 미리보기에서 좋은 예를했다. 도메인 신속한 책 나는 UI, App 및 Domain 모두 Infra를 사용할 수 있다고 말합니다. – eduncan911
내가 가진 유일한 문제점은 내 책에 인프라가 아무 것도 언급하지 않는다는 것입니다. UI-> App, Domain 및 Infra. App-> Domain 및 Infra. 그리고, Domain-> Infra. 나는 알고있다, 그것은 모두 가이드 라인이된다고 여겨진다. – eduncan911