Дизайн, управляемый доменом - Совокупный вопрос - PullRequest
2 голосов
/ 19 июля 2011

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

Итак, в этом состоянии дизайна пользователи создают черновики и отправляют свои истории. Мой домен содержит истории, команды и участников команды.

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

Для моей следующей задачи мне нужно разрешить добавлять комментарии к историям и создавать записи всякий раз, когда пользователь просматривает историю. Будет ли это принадлежать совокупности, так как они не имеют смысла без истории? Вот мое замешательство. Если они принадлежат агрегату, мне нужно будет загрузить весь агрегат при добавлении комментария или просто при добавлении записи, которую он просматривал?

Любая помощь будет великолепна, и, как вы видите, я новичок в DDD.

Спасибо!

1 Ответ

2 голосов
/ 19 июля 2011

Я не уверен, как это будет работать в EF, но с NHibernate у меня был бы прикладной уровень, загружающий объединенный корень из репозитория с включенной отложенной загрузкой (я предполагаю, что EF имеет такую ​​же возможность отложенной загрузки).

Комментарии будут доступны по совокупности рассказов (опять же, ваш друг здесь - ленивая загрузка).

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

...