Я новичок в CQRS, и я связываюсь, чтобы разобраться в проверке бизнес-правил на стороне записи (домене). Я знаю, что проверка на стороне клиента должна выполняться с точки зрения действительной даты (обязательное поле, длина строки, действительный адрес электронной почты и т.д.), а проверка, связанная с бизнес-правилом / бизнес-доменом, должна выполняться на стороне домена. Фактически, те же правила проверки на стороне клиента также должны применяться к команде в домене, поскольку мы не доверяем пользователям.
Итак, у нас есть действующая команда (AddEmailToCustomer), и обработчик команды вызывается для команды. Вот мой подход к валидации.
Могу ли я вызвать исключение в обработчике команд и добавить туда эти ошибки? Отправить команду в очередь ошибок или еще куда-нибудь? Могу ли я ответить чем-то вроде Bus.Reply и вернуть код ошибки? Если да, что мне делать с сообщениями об ошибках? Как мне сообщить об этих ошибках пользователю? Я знаю, что могу отправить их по электронной почте позже, но в веб-сценарии я могу отправить идентификатор запроса в команде (или использовать идентификатор сообщения) и запросить ответ с идентификатором запроса и отобразить сообщения об ошибках для пользователя.
Ваше руководство приветствуется.
Спасибо