CQRS и экраны CRUD

Один из основных принципов CQRS, насколько я понимаю, то, что команды должны быть центральными поведением, и иметь значение в бизнесе или УЛ., и не информационно-центрические, т.е., CRUD. Вместо того, чтобы фокусироваться на обновлении клиента, у нас есть команды как CustomerHasMoved. Что, если у Вас есть экраны CRUD, которые являются там для исправления определенных данных. Например, мы должны изменить имя клиента, который пишется c орфографическими ошибками. Это действительно не имеет большого количества значения в бизнесе. Это должно просто находиться под защитой команды UpdateCustomer?

21
задан Dave Schweisguth 14 February 2016 в 05:33
поделиться

3 ответа

На самом деле, могут быть различные причины для обновления имени клиента. Как Вы говорили, это может быть неправильно написано или... Вы можете пожениться и поменять имя на имя мужа.

Если бы у Вас была только команда UpdateCustomer, Вы бы потеряли первоначальное намерение и не смогли бы вести себя по-разному с каждым из них. Если бы имя было пропущено, это могло бы быть так же просто, как обновление базы данных, в то время как если бы Ваш клиент женился, Вам, возможно, пришлось бы уведомить отдел маркетинга, чтобы он мог предложить скидку.

В случае, если ваша сущность является чисто CRUD, то есть нет намерения связывать вас с изменением свойств, то вполне нормально иметь команду UpdateEntityCommand. Затем вы можете медленно перейти к чему-то более сложному

.
18
ответ дан 29 November 2019 в 06:46
поделиться

CustomerHasMoved - это событие, которое происходит после того, как вы обновили местоположение клиентов. Это событие обновляет прочитанные базы данных/кэш-базы данных. Команда из gui должна быть MoveCustomer или что-то в этом роде. Думаю, я бы поместил обновление имени клиента в команду типа UpdateCustomer.

.
0
ответ дан 29 November 2019 в 06:46
поделиться

Я просто хочу быстро прокомментировать это, когда оно появилось.

Важно отметить, что некоторые объекты на самом деле являются CRUD, и это нормально. Мне может быть все равно, почему имя меняется в моем домене, где я отправляю продукты людям, и мне нужны только эти данные для печати почтовых этикеток. Хитрость заключается в том, чтобы сделать поведение по умолчанию, а ЗАТЕМ вернуться к интерфейсу CRUD, как только вы будете уверены, что действительно не заботитесь о причинах, а не наоборот.

Грег

38
ответ дан 29 November 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: