Один из основных принципов CQRS, насколько я понимаю, то, что команды должны быть центральными поведением, и иметь значение в бизнесе или УЛ., и не информационно-центрические, т.е., CRUD. Вместо того, чтобы фокусироваться на обновлении клиента, у нас есть команды как CustomerHasMoved. Что, если у Вас есть экраны CRUD, которые являются там для исправления определенных данных. Например, мы должны изменить имя клиента, который пишется c орфографическими ошибками. Это действительно не имеет большого количества значения в бизнесе. Это должно просто находиться под защитой команды UpdateCustomer?
На самом деле, могут быть различные причины для обновления имени клиента. Как Вы говорили, это может быть неправильно написано или... Вы можете пожениться и поменять имя на имя мужа.
Если бы у Вас была только команда UpdateCustomer, Вы бы потеряли первоначальное намерение и не смогли бы вести себя по-разному с каждым из них. Если бы имя было пропущено, это могло бы быть так же просто, как обновление базы данных, в то время как если бы Ваш клиент женился, Вам, возможно, пришлось бы уведомить отдел маркетинга, чтобы он мог предложить скидку.
В случае, если ваша сущность является чисто CRUD, то есть нет намерения связывать вас с изменением свойств, то вполне нормально иметь команду UpdateEntityCommand. Затем вы можете медленно перейти к чему-то более сложному
.CustomerHasMoved - это событие, которое происходит после того, как вы обновили местоположение клиентов. Это событие обновляет прочитанные базы данных/кэш-базы данных. Команда из gui должна быть MoveCustomer или что-то в этом роде. Думаю, я бы поместил обновление имени клиента в команду типа UpdateCustomer.
.Я просто хочу быстро прокомментировать это, когда оно появилось.
Важно отметить, что некоторые объекты на самом деле являются CRUD, и это нормально. Мне может быть все равно, почему имя меняется в моем домене, где я отправляю продукты людям, и мне нужны только эти данные для печати почтовых этикеток. Хитрость заключается в том, чтобы сделать поведение по умолчанию, а ЗАТЕМ вернуться к интерфейсу CRUD, как только вы будете уверены, что действительно не заботитесь о причинах, а не наоборот.
Грег