Почему в архитектуре хранилища событий / CQRS хранятся события, а не команды?


Предположительно, мы могли бы воскресить состояние, применив тот же набор команд, так почему бы просто не хранить команды, а не события?

1 7

1 ответ:

События, сообщающие "это произошло в нашей системе". События происходят, когда команда была принята и обработана. Никто не может отвергнуть или изменить тот факт, что это произошло. Это единственный авторитетный источник изменений в системе

Команды-это просто способ для части системы (например, пользовательского интерфейса) сообщить компоненту, ответственному за внесение изменений в систему ("обработчик команд"), что он хочет сделать. Однако обработчик команды может выбрать не обрабатывать команду для различных целей. причины. Пользовательский интерфейс может содержать устаревшую информацию, и обработка команды не будет иметь бизнес-смысла, или пользователь может не иметь привилегий для выполнения этого действия. В любом случае, команда на самом деле просто запрос и не имеет никакого отношения к состоянию системы

.