Сервисы приложений, управляемые доменом - PullRequest
4 голосов
/ 27 марта 2011

У меня есть вопрос, касающийся служб приложений в DDD.Например, у меня есть правило, согласно которому, когда пользователь подтверждает регистрацию, выполняются следующие действия:

  1. Учетная запись пользователя обновляется, чтобы он мог войти в систему.
  2. Баланс пользователя равенinitialized.
  3. Пользователь получает письмо с подтверждением о том, что регистрация была подтверждена.

Может ли приложение службы SecurityAppService содержать следующий рабочий процесс при вызове своего метода ConfirmRegistration():

  1. Вызовите домен SecurityService для обновления учетной записи пользователя.
  2. Вызовите домен AccountingService для инициализации баланса пользователя.
  3. Позвоните в инфраструктуру EmailService для отправки электронного письма пользователю.

Вопрос в следующем.Законен ли вызов AccountingService из SecurityAppService?Или я должен включить это в вызов SecurityService?

Ответы [ 2 ]

3 голосов
/ 27 марта 2011

Вы можете использовать шаблон CQRS.

UserManager имеет метод Register (пользователь-пользователь).Он добавит пользователя и поднимет AddUserEvent.AccountService и EmailService реализуют EventHandlers и получают объект User через EventHandlerArgument.

Итак, SecurityService ничего не знает о других службах, и все эти службы независимы.

2 голосов
/ 27 марта 2011

ИМХО, ответ Да, это законно. Службе разрешается вызывать другую службу, когда это необходимо. В конкретном примере это определенно то, что вы хотите сделать. Реальный вопрос в том, как вы управляете зависимостью. Используйте DI, чтобы вы могли отделить прямую связь между двумя реализациями.

...