Существует большая разница между уровнем приложений и уровнем представления с точки зрения DDD.
Хотя DDD сосредотачивается вокруг того, как моделировать домен, используя строительные блоки DDD и такие понятия, как ограниченный контекст, вездесущий язык и т. Д., По-прежнему жизненно важно четко идентифицировать и разделять различные уровни в вашем приложении.
Архитектура играет большую роль в реализации успешного приложения DDD. Известная архитектура, получившая много шумихи в последнее время, - это луковая архитектура:
В этом проекте уровень пользовательского интерфейса / представления и прикладной уровень четко разделены. Слияние двух вместе создает тесную связь между двумя слоями, которые имеют четкие отдельные проблемы и обязанности.
Уровень представления должен содержать только логику представления. Избегайте умных интерфейсов, которые знают слишком много. В основном это контроллеры и представления MVC в дополнение к CSS, JS, шаблонам, формам и всему, что относится к объектам ответа и запроса.
Действия, выполняемые через представление, делегируются на прикладной уровень через команды. Прикладной уровень содержит логику приложения. Это обычно отображается в случае использования. Он содержит ЧТО система должна сделать, чтобы удовлетворить сценарий использования. Типичная служба приложений запрашивает у хранилища агрегат, а затем вызывает действие для этого агрегата.
Взгляните на пример проекта из IDDD Вона Вернона