—————————————
Understanding Domain Entities with Examples - DDD w/ TypeScript
How to Handle Updates on Aggregates - Domain-Driven Design w/ TypeScript
Первая статья - попытка разобраться в термине entity из DDD. Как оказалось - проблема в том, что value object и entity имеют пересекающееся значение, которое может путаться в имплементациях. В статье найдете определение энтити, а на примере класса Job, автор покажет как создавать и работать с энтити и в чем отличие от value object. Во второй статье уделяется внимание агрегатам и рассказывается о связях, апдейтах, работу с моделями и событиями из агрегата. Мне не нравятся некоторые примеры реализации (например
—————————————
What Are Aggregates In Domain-Driven Design?
How Do I Persist Aggregates?
Consistency Boundary
Optimistic Concurrency
В качестве примера, как рассказать об агрегатах понятнее и как авторы используя одни и те же определения пишут разные вещи привожу пример - серия статей от James Hickey об aggregates. Статьи расставлены в порядке прочтения (от первой к последней). Важно понимать, что мнение каждого из авторов субъективно и стоит проверять описанные идеи лично (в пет или учебных проектах, в продакшене проверять не стоит без полной уверенности, что это там надо).
Автор начинает разбор темы с системы состоящей из 3 моделей (
——— одной строкой ———
- @Freika взял и перевел майндмап с вопросами написанный много лет назад в отдельный сайт;
- Я стримил вариант реализации game of life, но Виктор шокировал вариантом Game of Life in one Ruby statement… inspired by APL;
Understanding Domain Entities with Examples - DDD w/ TypeScript
How to Handle Updates on Aggregates - Domain-Driven Design w/ TypeScript
Первая статья - попытка разобраться в термине entity из DDD. Как оказалось - проблема в том, что value object и entity имеют пересекающееся значение, которое может путаться в имплементациях. В статье найдете определение энтити, а на примере класса Job, автор покажет как создавать и работать с энтити и в чем отличие от value object. Во второй статье уделяется внимание агрегатам и рассказывается о связях, апдейтах, работу с моделями и событиями из агрегата. Мне не нравятся некоторые примеры реализации (например
UserService
из статьи об агрегатах, там еще походу опечатка ибо код не работает как должен), но статьи будут полезны для общего развития, а также, что бы понять что проблема DDD в том, что нет конкретики и стандартизации в терминах. Так же хотелось бы видеть отдельную статью по сервисам, потому что хочется видеть какую логику автор хочет держать в энтити, а какую в сервисе.—————————————
What Are Aggregates In Domain-Driven Design?
How Do I Persist Aggregates?
Consistency Boundary
Optimistic Concurrency
В качестве примера, как рассказать об агрегатах понятнее и как авторы используя одни и те же определения пишут разные вещи привожу пример - серия статей от James Hickey об aggregates. Статьи расставлены в порядке прочтения (от первой к последней). Важно понимать, что мнение каждого из авторов субъективно и стоит проверять описанные идеи лично (в пет или учебных проектах, в продакшене проверять не стоит без полной уверенности, что это там надо).
Автор начинает разбор темы с системы состоящей из 3 моделей (
Team -> Member, Team -> Project
), где дает определение агрегатам и объясняет в чем абстракция может помочь. Дальше происходит разбор системы с агрегатами, описывается, почему дупликации данных между агрегатами не проблема и как можно сохранять агрегаты (CQRS, relation model, event sourced). О ES дается подробное объяснение принципа работы сохранения агрегатов. Дальше описывается самая сложная часть - как найти "хороший" размер и границы для каждого из агрегатов. А в конце объясняется Optimistic Concurrency и зачем это надо.——— одной строкой ———
- @Freika взял и перевел майндмап с вопросами написанный много лет назад в отдельный сайт;
- Я стримил вариант реализации game of life, но Виктор шокировал вариантом Game of Life in one Ruby statement… inspired by APL;