DDD의 프레젠테이션 VS 응용 프로그램 계층


9

도메인 기반 디자인에서 프레젠테이션과 응용 프로그램 계층 사이에 명확한 선을 그리는 데 어려움이 있습니다.

컨트롤러, 뷰, 레이아웃, Javascript 및 CSS 파일은 어디로 가야합니까?

응용 프로그램 또는 프레젠테이션 계층에 있습니까?

그리고 그것들이 모두 같은 층에 함께 있다면, 다른 층은 무엇입니까? 비어 있습니까?

답변:


7

누군가 "응용 프로그램 계층"과 "프레젠테이션 계층"을 생성하고 명명했다고해서 응용 프로그램에 해당 응용 프로그램이 있어야한다는 의미는 아닙니다. 함께 그룹화 한 상당한 양의 코드를 생성 한 후 개발자 간의 통신 및 코드의 명확성을 위해이 그룹의 이름을 지정하려는 계층을 만들어야합니다.

DDD 지점에서. 응용 프로그램 계층은 도메인 계층이 아닌 모든 것입니다. 여기에는 응용 프로그램 논리, 프레젠테이션 및 응용 프로그램 서비스가 포함됩니다.


2
고맙습니다. 사실 제 신청서와 프레젠테이션을 분리하는 것은 쓸모가 없다는 것을 알게되었습니다. 단순성!
Matthieu Napoli

DDD에 프리젠 테이션 레이어에 UI 대신 REST API가있는 경우 REST API는 애플리케이션 또는 프리젠 테이션 레이어입니다. 나는 지금은 REST API는 프리젠 테이션 계층입니다 .. 확인 이후, 혼란 스러워요
다리오 Granich

8
실제로 DDD는 프레젠테이션, 응용 프로그램, 도메인, 인프라 등 4 가지 계층을 높은 순서에서 낮은 순서로 규정 합니다. 따라서 응용 프로그램 계층 에는 "프레젠테이션"이 포함 되지 않습니다 . 또한 코드를 그룹화하는 것뿐만 아니라 컴파일 타임 종속성의 방향을 제한하는 것에 관한 것이므로 상당한 양의 코드를 작성 하기 전에 항상 레이어를 결정하는 것이 좋습니다 .
Rogério 2012

11

DDD 관점에서 응용 프로그램 계층과 프레젠테이션 계층 간에는 큰 차이가 있습니다.

DDD는 경계 컨텍스트, 유비쿼터스 언어 등과 같은 DDD 빌딩 블록 및 개념을 사용하여 도메인을 모델링하는 방법을 중심으로하지만 앱에서 다양한 계층을 명확하게 식별하고 분리하는 것이 여전히 중요합니다.

이 아키텍처는 성공적인 DDD 앱을 구현하는 데 큰 역할을합니다. 요즘 많은 과대 광고를 한 유명한 아키텍처는 양파 아키텍처입니다.

여기에 이미지 설명을 입력하십시오

이 디자인에서 UI / 프레젠테이션 레이어와 응용 프로그램 레이어는 명확하게 분리되어 있습니다. 2를 병합하면 별도의 우려 사항과 책임이있는 2 개의 계층간에 밀접한 결합이 발생합니다.

프리젠 테이션 레이어는 프리젠 테이션 로직 만 수용해야합니다. 너무 많은 스마트 UI를 피하십시오. 여기에는 주로 응답, 요청 객체와 관련된 CSS, JS, 템플릿, 양식 및 모든 것 외에도 MVC의 컨트롤러와 뷰가 있습니다.

프리젠 테이션을 통해 발행 된 조치는 명령을 통해 애플리케이션 계층에 위임됩니다. 응용 프로그램 계층에는 응용 프로그램 논리가 포함됩니다. 일반적으로 유스 케이스에 맵핑됩니다. 유스 케이스를 충족시키기 위해 시스템이 수행해야 할 사항이 포함되어 있습니다. 일반적인 응용 프로그램 서비스는 리포지토리에 집계를 반환 한 다음 해당 집계에 대한 작업을 호출하도록 요청합니다.

본 버논의 IDDD 에서 샘플 프로젝트를 살펴 보십시오


2
+1. 이것이 내가 프로젝트를 구현 한 방법입니다. 즉시 나는 그렇게함으로써 이익을 얻을 수있었습니다. 응용 프로그램 계층으로 추상화 한 후 여러 프레젠테이션 계층을 가질 수있었습니다. 예를 들어, 웹 API와 웹 사이트는 모두 응용 프로그램 계층을 소비하므로 많은 시간과 코드가 절약되었습니다. 웹 앱은 웹 API와 메시지를주고받을 필요가 없으며 모든 논리를 동기화 상태로 유지하기 때문에 둘 사이.
Sinaesthetic

어디있다 entry pointcomposition root배치? 나는 항상 그것이 Application레이어 의 책임이라고 생각했다 . 하지만 이제는 이것이 Presentation레이어 인 것 같습니다 .
Denis535

2

도메인 기반 디자인은 프레젠테이션 레이어 또는 응용 프로그램 레이어와 관련이 없습니다. DDD는 도메인 계층에 중점을 둔 방법론입니다. 즉, DDD는 도메인 계층을 제외한 다른 계층에 대한 제약을 부과하지 않으며 귀하의 질문은 다른 방법론의 맥락에서 요청할 수 있습니다.

즉, DDD 애플리케이션에 4 계층 아키텍처를 사용하는 것이 매우 일반적입니다. 다음은 레이어와 사용 목적 보여주는 하나의 응용 프로그램의 예 DDDSample 아키텍처 . 따라서이 아키텍처를 사용하도록 선택하면보기 및 레이아웃이 인터페이스 레이어로 이동하고 컨트롤러가 인터페이스 독립적 인 경우 응용 프로그램 레이어로 이동합니다.

DDD가 제약 조건을 부과하지 않는다고 말했듯이 다른 종류의 아키텍처를 선택할 수도 있습니다. 다른 구조를 가지면서도 DDD 애플리케이션에 사용될 수있는 많은 MVC 프레임 워크가 있습니다. 물론 뷰와 레이아웃을 적절히 배치합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.