Какой результат возвращает запрос команды в дизайне CQRS? - PullRequest
7 голосов
/ 31 декабря 2010

Я смотрю на CQRS, но считаю, что он ограничивает отображение результатов команд, скажем, в веб-приложении.

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

Возможно ли в веб-приложении, что командный запрос может переносить результат события, которое оно создает, обратно в браузер?

1 Ответ

6 голосов
/ 01 января 2011

Ответ на заголовок этого вопроса довольно прост: ничего, пустота или с точки зрения веб-обозревателя / отдыха 200 ОК с пустым телом.

Команды, примененные к системе (если изменение успешно зафиксировано), не дают результата. А в случае, если вы хотите оставить бизнес-логику на стороне сервера, да, вам нужно обновить данные, выполнив еще один запрос (запрос) к серверу.

Однако чаще всего вы можете избавиться от 2-й поездки туда и обратно на сервер. Возьмите таблицу, где вы изменяете строку и нажимаете кнопку сохранения. Вам действительно нужно обновить таблицу? Или в случае, если пользователь отправляет комментарий к сообщению в блоге, просто добавьте комментарий к другим комментариям в домене без обратной передачи.

Если вы хотите получить измененное состояние, возвращаемое с сервера, вам нужно серьезно подумать о том, чего вы пытаетесь достичь. Большинство сценариев можно изменить, чтобы простого 200 OK было более чем достаточно.

Обновление. Относительно вашего вопроса об очередности входящих команд. Не рекомендуется, чтобы входящие команды были поставлены в очередь, поскольку это может возвращать ложные срабатывания (команда была успешно получена и помещена в очередь, но когда команда пытается изменить состояние системы, она терпит неудачу). Из этого правила есть одно исключение: если у вас есть система с моделью только для добавления в качестве состояния. Тогда безопасно ставить в очередь изменение состояния системы до позднего времени, если команда верна.

Статья Udi Dahans под названием Clarified CQRS всегда хорошо читается на эту тему http://www.udidahan.com/2009/12/09/clarified-cqrs/

...