2021-10-26 DDD CQRS Гексагональная архитектура
ฝัง
- เผยแพร่เมื่อ 14 ต.ค. 2024
- Разберём этапы построения одной популярной инфографики, посвящённой связи между различными архитектурными подходами: DDD, CQRS, гексагональная архитектура, порты и адаптеры.
Ссылка на оригинальную статью: habr.com/ru/po...
Только что прочитал в прошлом видео заявку на DDD и CQRS и тут видос. Магия :)
Большое спасибо за видео. Сам пишу на симфони, понял, что надо делить приложение на контексты и каждый контекст на Application, Domain, Infrastructure. И тут начинается самое неприятное. Симфони генерирует сущности, которые зависят из-за атрибутов от Doctrine, значит это не сущности, это модель данных, так как сущность не может зависеть от инфраструктуры. Тогда где ее размещать? В папке инфраструктуры? Окей. Значит надо писать какие-то конвертеры моделей в сущности. Но где размещать интерфейсы? Я не прошу ответов, это риторические вопросы были. Хотел попросить, не могли бы Вы на примере симфони показать чистую, гексагональную архитектуру для энтерпрайза? Самое просто что-нибудь... Типо блога... Я в целом суть понял но на практике что куда и в какую папку размещать - начинается путаница. Спасибо ещё раз за видео!
Если коротко, то сущности могут быть и доменными (пользователь, заказ) и инфраструктурными (журнал аудита, кэш запроса к внешнему апи). Доменные модели надо хранить в домене. Мэппинг доктрины можно описывать в аннотациях (не совсем по феншую, но как компромисс) , в xml и даже в php явно конфиги писать. В последних двух случаях- полная отвязка от доменного слоя.
В первом тоже можно один глаз прикрыть, потому как теоретически обрабатывать аннотации доктрины может другой класс. Или вообще не обрабатывать - конфиг превратится просто в комменты, без функционала.
У нас домены это и есть сущности доктрины, да в зависимостях есть доктрина в доменном слое, но мы решили забить, пока ничего плохого не произошло. Посмотри вот этот видос th-cam.com/video/cZYezl_2mZk/w-d-xo.html тут ребята разделили домен и сущности, довольно не плохо тоже получилось.
У вас граней 10, а не 8. А гексагон (если что) это шестиугольник :). На смысл это конечно не влияет.
делал такую штуку на php и go класс
Все это круто, но только на картинках. Есть код? Хотелось бы тоже самое но с практическими примерами) и желательно пошагово. Типа, вот так-то так-то мы делаем слой доменный, так-то так то реализуем интерфейсы и т.д. Лично мне видео показалось бесполезным по причине отсутствия примеров конкретных.
Чудес не бывает. Даже короткая книжка только по DDD - это пара сотен страниц. Объять необъятное в коротком видео задачи не было. Только показать расположение терминов относительно друг друга.
@@denis0ru ну ок. Спасибо. Но если будет возможность запилить такое же видео тока с примерами - с удовольствием его гляну, даже если оно будет 3 часовое :)
@@ЮрийКарпов-э3ч заказ принят. Есть одна идейка.
Вот тут что то похожее th-cam.com/video/cZYezl_2mZk/w-d-xo.html