Вызов одной команды из другой в случае использования CQRS - PullRequest
0 голосов
/ 03 июня 2018

Я занимаюсь разработкой приложения с использованием CQRS.И у меня есть случай, когда я немного запутался.

У меня есть одна команда CreateUser.Теперь мне нужно создать команду ImportUsers.Я предполагаю, что цели этих команд ясны.Таким образом, есть две опции:

  1. Вызов команды CreateUser из команды ImportUsers.
  2. Сделайте что-то вроде копирования / вставки, чтобы сделать все с нуля в команде ImportUsers.

Какая лучшая практика?Заранее спасибо.

1 Ответ

0 голосов
/ 04 июня 2018

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

Логика создания отдельного пользователя принадлежит фабрике, которую вызывает каждый из этих методов.У фабрики должен быть метод CreateUser, который принимает все данные в качестве параметров или принимает DTO, если существует более 5 или около того параметров, которые, как я полагаю, есть.С фабрикой для создания пользователей единственное различие в этих двух командах состоит в том, что ImportUsers будет вызывать фабричный метод CreateUser в цикле.

Проверка этой публикации об идее команд.Если вы используете DDD, прочитайте пост Уди Даана о том, как все создания объектов должны быть в методе в каком-то агрегате где-то.

...