Я разрабатываю приложение с использованием CQRS. И у меня есть случай, когда я немного растерялся.
У меня есть одна команда CreateUser. Теперь мне нужно создать команду ImportUsers. Я предполагаю, что цели этих команд ясны. Итак, есть два варианта:
Какая лучшая практика? Заранее спасибо.
Вы помещаете свою логику в неправильное место, и именно это вызывает проблемы. Команды предназначены для управления доменной логикой. Другими словами, они вызывают соответствующие методы в домене, чтобы выполнить свою работу, они сами этого не делают.
Логика создания одного пользователя принадлежит фабрике, которую вызывает каждый из этих методов. У фабрики должен быть метод CreateUser, который принимает все данные в качестве параметров или принимает DTO, если существует более 5 или около того параметров, которые, как я полагаю, есть. С фабрикой для создания пользователей единственное различие в этих двух командах состоит в том, что ImportUsers будет вызывать фабричный метод CreateUser в цикле.
Проверьте эта публикация об идее команд Если вы используете DDD, прочитайте Пост Уди Даана о том, как все создания объектов должны быть в методе в каком-то агрегате.
Других решений пока нет …