답변:
누군가 "응용 프로그램 계층"과 "프레젠테이션 계층"을 생성하고 명명했다고해서 응용 프로그램에 해당 응용 프로그램이 있어야한다는 의미는 아닙니다. 함께 그룹화 한 상당한 양의 코드를 생성 한 후 개발자 간의 통신 및 코드의 명확성을 위해이 그룹의 이름을 지정하려는 계층을 만들어야합니다.
DDD 지점에서. 응용 프로그램 계층은 도메인 계층이 아닌 모든 것입니다. 여기에는 응용 프로그램 논리, 프레젠테이션 및 응용 프로그램 서비스가 포함됩니다.
DDD 관점에서 응용 프로그램 계층과 프레젠테이션 계층 간에는 큰 차이가 있습니다.
DDD는 경계 컨텍스트, 유비쿼터스 언어 등과 같은 DDD 빌딩 블록 및 개념을 사용하여 도메인을 모델링하는 방법을 중심으로하지만 앱에서 다양한 계층을 명확하게 식별하고 분리하는 것이 여전히 중요합니다.
이 아키텍처는 성공적인 DDD 앱을 구현하는 데 큰 역할을합니다. 요즘 많은 과대 광고를 한 유명한 아키텍처는 양파 아키텍처입니다.
이 디자인에서 UI / 프레젠테이션 레이어와 응용 프로그램 레이어는 명확하게 분리되어 있습니다. 2를 병합하면 별도의 우려 사항과 책임이있는 2 개의 계층간에 밀접한 결합이 발생합니다.
프리젠 테이션 레이어는 프리젠 테이션 로직 만 수용해야합니다. 너무 많은 스마트 UI를 피하십시오. 여기에는 주로 응답, 요청 객체와 관련된 CSS, JS, 템플릿, 양식 및 모든 것 외에도 MVC의 컨트롤러와 뷰가 있습니다.
프리젠 테이션을 통해 발행 된 조치는 명령을 통해 애플리케이션 계층에 위임됩니다. 응용 프로그램 계층에는 응용 프로그램 논리가 포함됩니다. 일반적으로 유스 케이스에 맵핑됩니다. 유스 케이스를 충족시키기 위해 시스템이 수행해야 할 사항이 포함되어 있습니다. 일반적인 응용 프로그램 서비스는 리포지토리에 집계를 반환 한 다음 해당 집계에 대한 작업을 호출하도록 요청합니다.
본 버논의 IDDD 에서 샘플 프로젝트를 살펴 보십시오
entry point
및 composition root
배치? 나는 항상 그것이 Application
레이어 의 책임이라고 생각했다 . 하지만 이제는 이것이 Presentation
레이어 인 것 같습니다 .
도메인 기반 디자인은 프레젠테이션 레이어 또는 응용 프로그램 레이어와 관련이 없습니다. DDD는 도메인 계층에 중점을 둔 방법론입니다. 즉, DDD는 도메인 계층을 제외한 다른 계층에 대한 제약을 부과하지 않으며 귀하의 질문은 다른 방법론의 맥락에서 요청할 수 있습니다.
즉, DDD 애플리케이션에 4 계층 아키텍처를 사용하는 것이 매우 일반적입니다. 다음은 레이어와 사용 목적 보여주는 하나의 응용 프로그램의 예 DDDSample 아키텍처 . 따라서이 아키텍처를 사용하도록 선택하면보기 및 레이아웃이 인터페이스 레이어로 이동하고 컨트롤러가 인터페이스 독립적 인 경우 응용 프로그램 레이어로 이동합니다.
DDD가 제약 조건을 부과하지 않는다고 말했듯이 다른 종류의 아키텍처를 선택할 수도 있습니다. 다른 구조를 가지면서도 DDD 애플리케이션에 사용될 수있는 많은 MVC 프레임 워크가 있습니다. 물론 뷰와 레이아웃을 적절히 배치합니다.