Он отображает данные в таблице полностью
Как вы понимаете такой термин, как агрегат, начнем с этого?
Если речь идет о "отображении таблиц" то это не про агрегаты. Ну то есть "агрегат" это паттер смысл которого в том что в пределах границах оного есть гарантии консистентности данных. такая вот граница логической транзакции. но если ты данные не меняешь, то это все не применимо и соответственно называть это что-то агрегатом или проектировать его границы в контексте "отобразить" говорит о том что агрегатов у нас нет и похер
Имхо, не стоит загоняться терминами и попыткой реализовать так как написано в книге, сказано другими людьми. Опять же не всё надо натягивать на одну определенную архитектуру, подход. Агрегат - это набор сущностей, который поддерживает тот или иной процесс и инварианты, которые должны меняться только из него, через агрегат рут. Если нет такой потребности или она не существенна, не стоит пытаться сделать каноничный агрегат. Есть потребности в атомарных изменениях и жесткий вариантах - реализуете агрегат, так как это хороший подход для решения этих задач, нет такой потребности - реализуете обычную сущность, анемик сущеность или еще как. Т.е. это механизмы и подходы для решения ваших конкретных проблем, а не какая-то серебрянная пуля в архитектуре под которую нужно всё завести,и только тогда ты молодец.
Какую проблему решают агрегаты? Они не про "набор сущностей и чет там ещё". Они решают конкретную проблему (которой может не быть). Какую?
Граница транзакции, поддержание инвариантов
Окей, то есть при проектировании агрегатов нам не важны сущности и во а важны транзакции и какие данные нужны для поддержания инвариантов
Ну в целом да. Просто группа сущностей может работать над поддержанием какого либо валидного стейта. А может быть и не группа.
еще нюанс. вот у @overflow0x17 проскакивало что-то типа "разным сервисам нужны разные данные". Например статус заказа (я подозреваю у него агрегат это заказ). И как следствие я делаю допущение что часть проверок инвариантов "вытекает" из этого псевдо-агрегата наружу в сервисы. А это значит что мы уже не особо полагаемся на агрегат который должерн обеспечивать целостность своих данных, а на "сервисы" которые теперь представляют границу транзакции. То есть от агрегата мы перешли к классическому transaction scripts переусложненными попытками натянуть концепции из ДДД"
Обсуждают сегодня