Вызов одной команды из другой в случае использования CQRS

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

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

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

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

2

Решение

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector