Aus DDD-Sicht gibt es einen großen Unterschied zwischen der Anwendungsschicht und der Präsentationsschicht.
Obwohl sich DDD darauf konzentriert, wie die Domäne mithilfe der DDD-Bausteine und -Konzepte wie begrenzte Kontexte, allgegenwärtige Sprache usw. modelliert wird, ist es dennoch wichtig, die verschiedenen Ebenen in Ihrer App klar zu identifizieren und zu trennen.
Die Architektur spielt eine große Rolle bei der Implementierung einer erfolgreichen DDD-App. Eine berühmte Architektur, die in letzter Zeit viel Aufsehen erregt hat, ist die Zwiebelarchitektur:
In diesem Design sind die UI / Präsentationsschicht und die Anwendungsschicht klar voneinander getrennt. Das Zusammenführen der beiden führt zu einer engen Kopplung zwischen zwei Schichten, die klare getrennte Bedenken und Verantwortlichkeiten haben.
Die Präsentationsebene sollte nur die Präsentationslogik enthalten. Vermeiden Sie intelligente Benutzeroberflächen, die zu viel wissen. Hier befinden sich neben CSS, JS, Vorlagen, Formularen und allem, was sich auf Antwort- und Anforderungsobjekte bezieht, hauptsächlich die Controller und Ansichten der MVC.
Die durch die Präsentation ausgegebenen Aktionen werden über Befehle an die Anwendungsschicht delegiert. Die Anwendungsschicht enthält die Anwendungslogik. Normalerweise wird es einem Anwendungsfall zugeordnet. Es enthält, WAS das System tun sollte, um einen Anwendungsfall zu erfüllen. Ein typischer Anwendungsdienst fordert ein Repository auf, ein Aggregat zurückzugeben, und ruft dann eine Aktion für dieses Aggregat auf.
Schauen Sie sich das Beispielprojekt von Vaughn Vernons IDDD an