Подтвердить MessageBox с помощью EventSourcing? - PullRequest
1 голос
/ 25 июля 2011

в CQRS, источник событий является нашим единственным истинным источником информации, никогда не доверяйте вашей прочитанной модели данных, тогда, если мне нужно отобразить окно сообщения подтверждения, которое отображает, например, «последние 10 действий пользователя X», то какой подход я должен использовать?

1 - Отправить команду для запроса последних 10 действий в мои агрегаты, затем агрегат опубликует 10 событий, которые я обработал в своем пользовательском интерфейсе, содержащем действия пользователя?

2 - Или просто запросить мою модель чтения?

что CQRS говорит в моем случае?

Спасибо, ребята.

Джон Смит

1 Ответ

1 голос
/ 29 июля 2011

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

Простые правила (по крайней мере, я следую этим правилам):

  1. Всегда читать данные из базы данных для чтения.
  2. Вы можете получить доступ к объединенному корню только в том случае, если вам нужно что-то проверить перед применением события к AR и когда вам нужно воспроизвести события (в вашем домене должен быть только один метод для доступа к AR - GetById).

В вашем примере все просто: обрабатывайте пользовательские AR-сообщения и сохраняйте события в формате (вы должны отображать данные из события, а не просто сохранять событие), которые вам нужны внутри пользователя (вложенная коллекция в случае базы данных nosql) или в отдельной таблице в случай базы данных sql.

...