Я бы порекомендовал вам взглянуть на статью Грега Янга об основанных на задачах пользовательских интерфейсах о том, как DTO и сообщения взаимодействуют с вашей системой (как на стороне клиента, так и на стороне сервера).
Я согласен с Себастьяном, что ваши команды будут точно соответствовать тому, как будет выглядеть ваш пользовательский интерфейс. В результате вам, вероятно, понадобятся отдельные классы DTO / Model и команды. Это на самом деле неплохо, так как ваша Модель действительно является результатом вашей системы запросов и действительно не должна быть точной копией сообщений, которые вы отправляете в систему.
Кроме того, если ваши команды отделены от вашей модели, ваша забота о конструкторах команд исчезнет. Ваш контроллер просто собирает информацию от клиента, создает команду и затем отправляет ее.
Если вы только начинаете работать с CQRS, сайт Грега (cqrsinfo.com) довольно хорош, особенно его 6 1/2 часов видео . Да, это 6 с половиной часов, но это действительно отличное введение и обзор того, что такое CQRS. Это мне очень помогло.
Надеюсь, это поможет!