Команда CQRS и состояние домена
Я новичок в CQRS и запутался в том, как команда запишет изменение адреса для объекта клиента
Допустим, я разделил информацию о клиентах на две таблицы
клиент - база данных домена
Активный Предпочитаемый
База данных Customer_Read
Название,
Адрес,
Телефон,
Эл. адрес
Пользователь изменяет адрес клиента. Все поля адреса находятся в базе данных для чтения. может быть 3 или более удобных для запросов таблиц, в которых хранится информация об адресе.
Если я понимаю, что реализации CQRS (пример) Customer Domain (удаленный Aggregate root) должны публиковать событие об изменении адреса, которое должно обрабатываться несколькими обработчиками для обновления каждой таблицы.
Как мне реализовать это, когда я не буду изменять состояние объекта клиента? Должен ли домен знать, что он имеет адрес в другой базе данных?
Заранее спасибо.
С Уважением,
Мар
Обновить--
После просмотра большего количества сообщений в сети я предполагаю, что, если команда не изменяет состояние, никакое событие не будет сгенерировано для сохранения самого домена, но будут применены события для изменения адреса в таблицах запросов / дружественных представлений модели.
1 ответ
Вам все еще нужно сохранить некоторые данные домена где-то в постоянстве записи. Таким образом, адрес сохраняется в этом постоянном хранилище, событие публикуется после его изменения.
Сюда:
- если не было никаких изменений - мы можем пропустить публикацию события
- Домену не нужно ничего знать об объектах, которые могут (или не могут) быть подписаны на его события.
Эта логика применяется как к персистентности в реляционных БД (например, MS SQL с NHibernate), так и к источнику событий.