Команда CQRS и состояние домена

Я новичок в CQRS и запутался в том, как команда запишет изменение адреса для объекта клиента

Допустим, я разделил информацию о клиентах на две таблицы

клиент - база данных домена

Активный Предпочитаемый

База данных Customer_Read

Название,

Адрес,

Телефон,

Эл. адрес

Пользователь изменяет адрес клиента. Все поля адреса находятся в базе данных для чтения. может быть 3 или более удобных для запросов таблиц, в которых хранится информация об адресе.

Если я понимаю, что реализации CQRS (пример) Customer Domain (удаленный Aggregate root) должны публиковать событие об изменении адреса, которое должно обрабатываться несколькими обработчиками для обновления каждой таблицы.

Как мне реализовать это, когда я не буду изменять состояние объекта клиента? Должен ли домен знать, что он имеет адрес в другой базе данных?

Заранее спасибо.

С Уважением,

Мар

Обновить--

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

1 ответ

Решение

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

Сюда:

  • если не было никаких изменений - мы можем пропустить публикацию события
  • Домену не нужно ничего знать об объектах, которые могут (или не могут) быть подписаны на его события.

Эта логика применяется как к персистентности в реляционных БД (например, MS SQL с NHibernate), так и к источнику событий.

Другие вопросы по тегам