Лучшее место для сохранения домена для записи базы данных в CQRS (обработчик команд или обработчик событий домена) - PullRequest
5 голосов
/ 12 января 2011

Я сейчас изучаю CQRS и вижу некоторые исходные коды (SimpleCQRS Грега Янга и Mark Nihjof's). Я до сих пор путаю с событием команды и домена. Всегда ли нам нужно сохранять домен для «записи базы данных» в обработчик событий домена? Распространено ли, если я вызываю код для сохранения домена в базе данных в обработчике команд (обычно через репозиторий домена), а затем позволяю обработчику событий домена обрабатывать другие вещи (например, обновлять модель чтения и выполнять другие службы, такие как уведомление по электронной почте). Спасибо.

1 Ответ

7 голосов
/ 14 января 2011

Хранение событий: я бы не сохранил события, используя обработчик событий. Передача его из обработчика команд в хранилище или единицу работы, вероятно, является наиболее распространенным подходом при использовании событийного поиска. Так что, да, это обычно делает постоянство в обработчике команд (ну, делегируйте его) и заставляет обработчик событий делать другие вещи.

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

Команды фиксируют намерение и сообщают системе, что делать. Всегда используйте императив. События фиксируют намерения и рассказывают, что произошло в системе. Всегда в прошедшем времени.

Вы считаете меня кем-то новым в этой теме. Лучшее, что вы можете сделать, чтобы понять концепции CQRS, - это посмотреть материал на http://cqrsinfo.com и http://skillsmatter.com (архитектура / DDD). Другие люди, которые ведут блог на эту тему (вне моей головы): Уди Дахан, Грегори Янг, Джонатан Оливер, Ринат Абдуллин, Джереми Чассинг, ...

...