Обычно - Проект, управляемый доменом, требует rich моделей домена, что обычно означает, что бизнес-логика находится в методах, представляющих части домена.
Это обычно означает, чтоОбработчик команд будет отвечать за сантехнику (загрузка данных из базы данных, хранение изменений в базе данных) и делегировать модели домена работу по вычислению последствий запроса пользователя.
Таким образом, «охранники»"обычно реализуется в модели предметной области.
И последнее, я бы предпочел передать идентификатор пользователя, а не пользователя для свойства менеджера, поэтому я считаю, что охрану не следует ставитьв модели User.
Это нормально - когда модели домена требуется информация, которая не является локальной, вы обычно либо просматриваете эту информацию и передаете ее, либо передаете возможность поискаинформация.
Таким образом, в этом случае вы можете передавать "доменную службу", котораязнает, как искать UserRole с заданным UserId.
Вы говорите мне, что совершенно правильно передавать доменную службу в агрегат?На уровне реализации или только для метода, который имеет дело с?
Мое сильное предпочтение заключается в том, что службы передаются в качестве аргументов нужным им методам и не являются частью * реализации.Таким образом, сущности в доменной модели содержат данные , а соавторы предоставляются по запросу.
«Доменная служба» является третьим элементом доменной модели, описанной Эвансом в главе 5 «синего цвета».книга.Во многих случаях служба домена описывает интерфейс (написанный на языке модели), но реализация интерфейса находится в «слое» приложения или инфраструктуры.
Так что я бы никогда не передал репозиторий для модели домена, но я бы передал доменную службу, которая делегирует реальную работу в репозиторий.