Из изображения видно, что вы имеете в виду старое Многоуровневая архитектура, в ее расслабленной форме (верхние слои могут зависеть только от нижних слоев, на любом нижнем уровне).
Я дам вам от языка примеры для каждого сценария:
1º - UI -> приложения -> Домен -> Инфракрасная
Это наиболее распространенный сценарий: пользователь отправить форму, чтобы создать новый объект от UI
; то UI
собирает данные из формы и вызывает службу Application
, которая создает новый объект сущности (с новым оператором или с использованием фабрики), а конструктор объекта (который находится в слое) инициализирует объект; то служба Application
использует репозитории из Infrastructure
(например, репозитория SQL), чтобы сохранить вновь созданный объект.
2º - UI -> приложения -> Инфракрасная
Это может быть сценарий, когда UI
проверяет, является ли текущий пользователь имеет право на доступ к ресурсу с помощью Application
службы, которые читают какой-либо файл с диска с использованием Infrastructure
; безопасность - Application
уровень ответственности.
3о - UI -> Домен
UI
вызывает Domain
службу для выполнения какой-то расчет; например, расчет НДС по некоторой цене продукта для того, чтобы показать пользователь
4º - UI -> Инфру
UI
хочет показать пользователю администрировать состояние соединения с базой данных (которая находится в слой Infrastructure
)
Вам нужен ответ, специфичный для C#? –
@WilsonSantos Это образец слоистой архитектуры из оригинальной книги DDD. В наши дни он менее популярен. Более новые альтернативы см. В разделе «Архитектура гексагональной архитектуры и лука». Вопросы, которые вы задаете, вероятно, не имеют смысла в типичной настройке DDD 2017. – guillaume31
@ guillaume31 На практике многоуровневая архитектура с применением DIP в значительной степени похожа на гексагональную архитектуру. Вы можете просто заменить «инфраструктуру» на «порт и адаптеры», и реализация такая же, нет? – plalx