Что такое модели чтения в агрегатах в DDD и где их использовать?

В DDD я знаю, что удаление совокупного корня будет означать одновременное удаление всего в пределах совокупной границы.

Но я заметил, что модели чтения (свойства только для чтения) используются в агрегатах, как заявил Лев Городинский в этом блоге: http://gorodinski.com/blog/2012/04/25/read-models-as-a-tactical-pattern-in-domain-driven-design-ddd/

Но поскольку эти модели являются частью агрегата, то как мы относимся к ним в случае удаления или обновления нашего агрегата?

Кроме того, можем ли мы использовать их для обеспечения инвариантности / согласованности агрегатов?

Я был бы признателен за пример о них и о том, как мы используем их в агрегатах, не нарушая принципов DDD.


person Simple Code    schedule 23.09.2017    source источник


Ответы (1)


Но поскольку эти модели являются частью агрегата, то как мы относимся к ним в случае удаления или обновления нашего агрегата?

Они не являются частью агрегата (агрегат - это модель записи). В лучшем случае это вид или проекция одного или нескольких агрегатов.

Кроме того, можем ли мы использовать их для обеспечения инвариантности / согласованности агрегатов?

Нет, потому что они не являются частью Агрегата. Вы можете использовать их для проверки, но в конечном итоге последовательной предварительной агрегатной проверки и в очень особых случаях (если вам нужно, чтобы эта проверка была строго согласованной, вам следует пересмотреть границу своих агрегатов, поскольку они, вероятно, ошибочны)

P.S. В этом сообщении в блоге говорится, что эти модели чтения должны использоваться UI или аналогичными, а не агрегатами.

person Constantin Galbenu    schedule 24.09.2017