2013-06-23 3 views
1

Implementing DDD, страница 233:Должен ли нижестоящий объект всегда представлять собой сводный корень?

Есть случаи, когда объект в контексте ниже по течению, должен быть в конечном счете, в соответствии с частичным состоянием одного или несколько агрегатов в контексте вверх по течению. В этом случае мы бы сконструировать агрегат в вниз по течению, потребляющего контексте, поскольку Сущности используются для поддержания нити непрерывности изменения

По мнению автора, если конечной консистенции требуется, то нисходящий объект всегда должен быть составным корнем. Есть ли особая причина, почему он никогда не должен быть сконструирован как внутренний объект ?

ОБНОВЛЕНИЕ:

Можно утверждать, что они всегда должны быть корнем, чтобы предотвратить наличие нескольких вниз по течению объектов (то есть объекты, отражающие состояние добывающих объектов) с тем же идентификатором, но если синхронизация только один путь (от вверх по течению до нисходящего контекста), действительно ли не существует ситуаций, когда для двух объектов нижнего уровня нормально иметь одинаковые идентификаторы?

спасибо

+0

Зависит от того, использует ли нижестоящая система тактические узоры или нет. –

+0

@ Yves Reynhout: Совокупные корни и сущности - тактические узоры. – EdvRusj

+0

Я не совсем понимаю ваш вопрос. Честно говоря, я не думаю, что нисходящие идентификаторы действительно настолько значительны. До тех пор, пока вы можете перейти к правильному нисходящему объекту из системы записи AR. –

ответ

0

Я возьму трещину на этом.

Он говорит о ограниченном контексте нисходящего потока, а не о нижестоящем объекте. Это важная фраза.

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

Также - совокупный корень является единицей согласованности в DDD. Так как он говорит - если вам нужна конечная согласованность в объекте, который существует в нижнем ограниченном контексте, спроектируйте совокупный корень (граница согласованности) в этом ограниченном контексте ниже по течению.