Я просто пытаюсь понять, как нужно обновлять объект, используя CQS. Предположим, пользовательский интерфейс позволяет пользователю обновлять несколько свойств конкретного объекта, а при отправке в фоновом режиме создается и отправляется команда обновления.CQS и обновление существующего объекта
Часть я не совсем понимаю:
- делает CMD обработчик получения сообщения от диспетчера затем извлечь существующий объект из БД, чтобы затем сопоставить полученные свойства складе Пункт на то сохранить? Или
- - это извлечение существующего элемента, выполненного до отправки cmd-msg, к которому оно присоединено (восстановленный объект прикреплен к cmd, который затем отправляется)?
Насколько я понимаю, CQS позволяет более легко перейти на CQRS позже (при необходимости)? Это верно?
Если это так, проблема с 2 выше заключается в том, что запросы могут быть извлечены из схемы, очень похожей на запрос из схемы команды/записи. Я что-то упускаю?
Спасибо за это. Я проделал пару курсов ddd и прочитал несколько Эрик Эванс, Грег Янг и Мартин Фаулер публикует эту тему, но обнаружил, что пытаясь применить то, что я узнал, я просто не был уверен в некоторых аспектах. Спасибо, что восполнили пробелы, это очень ценится. – CraigM
Возможно, еще один глупый вопрос, который может быть довольно очевиден, но лучше ли выполнять обработчики команд и запросов в слое BLL или DAL? Я склоняюсь больше к слою BLL, так как тогда мне не нужно сопоставлять мои модели домена с моими моделями данных/сущностей из-за пределов обработчиков (отображение может быть инкапсулировано внутри обработчиков - предотвращение дальнейшего загрязнения моего BLL код сопоставления) - это правильно? Это также больше относится к принципу единой ответственности. – CraigM
Уровень бизнес-логики, обычно - в ваших модульных тестах вы обычно тестируете команды, используя тестовый двойной для репозитория (DAL). – VoiceOfUnreason