Istnieje duża różnica między warstwą aplikacji a warstwą prezentacji z punktu widzenia DDD.
Chociaż DDD koncentruje się na tym, jak modelować domenę przy użyciu bloków konstrukcyjnych DDD i pojęć, takich jak ograniczone konteksty, wszechobecny język i tak dalej, nadal niezwykle ważne jest, aby wyraźnie zidentyfikować i oddzielić różne warstwy w aplikacji.
Architektura odgrywa dużą rolę we wdrażaniu udanej aplikacji DDD. Słynna architektura, która ostatnio zyskała wiele szumu, to architektura cebulowa:
W tym projekcie warstwa interfejsu użytkownika / prezentacji i warstwa aplikacji są wyraźnie oddzielone. Połączenie dwóch razem wprowadza ścisłe połączenie między 2 warstwami, które mają wyraźne oddzielne obawy i obowiązki.
Warstwa prezentacji powinna zawierać tylko logikę prezentacji. Unikaj inteligentnych interfejsów użytkownika, które wiedzą za dużo. Zawiera głównie kontrolery i widoki MVC oprócz CSS, JS, szablonów, formularzy i wszystkiego, co dotyczy obiektów odpowiedzi i żądań.
Działania wydane za pośrednictwem prezentacji są przekazywane do warstwy aplikacji za pomocą poleceń. Warstwa aplikacji zawiera logikę aplikacji. Zwykle jest mapowany do przypadku użycia. Zawiera CO, co powinien zrobić system, aby spełnić przypadek użycia. Typowa usługa aplikacji poprosi repozytorium o zwrócenie agregatu, a następnie wywoła akcję na tym agregacie.
Zobacz przykładowy projekt z IDDD Vaughna Vernona