CQS и обновление существующего объекта

Я просто пытаюсь понять, как происходит обновление сущности с помощью CQS. Скажем, пользовательский интерфейс позволяет пользователю обновлять несколько свойств конкретной сущности, а при отправке в серверной части создается и отправляется команда обновления.

Часть, которую я не совсем понимаю:

  1. Затем обработчик cmd, получающий сообщение от диспетчера, извлекает существующий объект из БД, чтобы затем сопоставить полученные свойства элемента запаса с последующим сохранением? Или же
  2. выполняется ли поиск существующего элемента до отправки сообщения CMD, к которому он затем присоединяется (извлеченный объект присоединяется к команде CMD, которая затем отправляется)?

Насколько я понимаю, что CQS позволяет более легкий переход к CQRS позже (при необходимости)? Это верно?

Если это так, проблема с 2 выше состоит в том, что запросы могут быть извлечены из схемы, которая сильно отличается от схемы команда / запись. Я что-то пропустил?

1 ответ

Затем обработчик cmd, получающий сообщение от диспетчера, извлекает существующий объект из БД, чтобы затем сопоставить полученные свойства элемента запаса с последующим сохранением

Да.

Если вы хотите понять cqrs, это очень поможет прочитать о ddd - не то, что они обязательно связаны, а потому, что большая часть литературы по CQRS предполагает, что вы знакомы со словарем DDD.

Но грубая схема ответственности обработчика команд

  1. Загрузить текущее состояние целевой команды
  2. Вызвать команду на цель
  3. Сохранять изменения в книге рекордов

Насколько я понимаю, что CQS позволяет более легкий переход к CQRS позже (при необходимости)?

Это не совсем верно - понимание различия Мейера между командой и запросами облегчает понимание паттерна CQRS, но я не уверен, что на самом деле так сильно помогает в переходе.

Если это так, проблема с 2 выше состоит в том, что запросы могут быть извлечены из схемы, которая сильно отличается от схемы команда / запись. Я что-то пропустил?

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

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

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