2012-07-03 3 views
2

Мы недавно начали разрабатывать приложения, используя концепции как из DDD, так и из CQRS (без событийного поиска). Я все еще несколько смущен, так как точно для того, чтобы вызвать хранилище, чтобы сохранить мои Агрегатные Корни.DDD/CQRS: где упорствовать

Выполнять ли это в обработчиках команд или делать это в обработчиках событий?

ответ

4

Вы делаете это внутри своего обработчика команд. Вы сохраняете объекты домена как обычно. Даже если вы не используете источник событий в качестве средства сохранения объектов домена, вам все равно придется запускать события, на которые будет подписана ваша служба запросов. Обработчики событий на стороне чтения затем обновят декорированные таблицы, созданные для экранов пользовательского интерфейса. Таким образом, в основном у вас есть два набора кода доступа к данным: один для домена, один для службы запросов (чтение). Его меньше работать, если вы используете источник событий для сохранения объектов домена ...

+0

Спасибо. В случае длительных «транзакций» («Сагас?»), Если они тоже выкидывают команды? Во-вторых, я предполагаю, что команды не обязательно должны поступать из пользовательского интерфейса? – jett

+0

Правильно - выдача команды не является эксклюзивной для пользовательского интерфейса. Saga может выдавать команды, а также обработчики событий. Типичным примером последнего является то, когда запрос обновления завершается с ошибкой, и требуется команда компенсации для отмены исходной команды. –

Смежные вопросы