Я только что узнал о CQRS и проанализировал свой существующий код, ища места, где я нарушаю или применяю CQRS.Могу ли я вернуть состояние из команды CQRS?
До сих пор я не нашел места, где изменяется запрос. Однако многие команды изменяют состояние и возвращают объект данных, представляющий обновленное состояние.
Например: Угловой клиент отправляет запрос HTTP на номер /api/message.post
. Идентификатор пользователя прикрепляется к запросу HTTP-сервером (на основе заголовков HTTP) и передается в микросервис, который обрабатывает команды message.post
. Результатом обработчика команд является {ok: false}
или {ok: true, message: {_id: "xyz", text: "new" ...}}
, а объект ответа проксирован с микросервиса обратно на Угловой на HTTP-сервере.
Возвращает ли государство из-за нарушения CQRS?
Должен ли я возвращать из команды только «ok: true/false», а затем сделать второй запрос, чтобы получить новое сообщение? Если да, то почему?
Стоит ли накладные расходы, если запрос/ответы происходят через http из браузера?
edit Причина, по которой у меня есть данные, которые мне нужны в конце моей команды, мои модели чтения и записи в настоящее время идентичны. Я понимаю, что в будущем я могу применить модель записи для команд и модель чтения для запросов, после чего уже не имеет смысла возвращать данные, которые команда написала.
Я не думаю, что обработчик ** ** возвращает это. Команда отправляется на командную шину, после чего вы можете вернуть данные, считанные из модели чтения. Если что-то пошло не так, должно быть исключение –
Это не действительно CQRS, если вы используете ту же модель для чтения и записи. Просто запустите запрос сразу после запуска команды, так как изменения данных будут немедленными. CQRS работает наилучшим образом, когда задействовано сотрудничество (например, продажа билетов, комментарии к одной и той же статье и т. Д.), Или операция может быть отложена (например: разрешить пользователю отменить заказ в течение 5 минут до начала оплаты кредитной карты). Если это однопользовательская операция, которая обрабатывается немедленно и требует немедленного отображения изменений, CQRS может слишком усложнить ситуацию для этой части домена. –