2011-03-27 4 views
4

J'ai une question concernant les services d'application dans DDD. Par exemple, j'ai une règle qui lorsqu'un utilisateur confirme l'enregistrement les actions suivantes ont lieu:Services d'application de conception guidée par domaine

  1. Le compte de l'utilisateur est mis à jour afin qu'il puisse se connecter au système.
  2. La balance de l'utilisateur est initialisée.
  3. L'utilisateur reçoit une lettre de confirmation que l'enregistrement a été confirmé.

Compte tenu d'une SecurityAppService de service d'application, peut-il peut contenir le flux de travail suivant à appeler sa méthode ConfirmRegistration():

  1. domaine Call SecurityService mettre à jour le compte de l'utilisateur.
  2. Appelez le domaine AccountingService pour initialiser le solde de l'utilisateur.
  3. Appelez l'infrastructure EmailService pour envoyer un courrier électronique à l'utilisateur.

La question est la suivante. L'appel à AccountingService est-il légal depuis SecurityAppService? Ou je devrais inclure cela dans l'appel au SecurityService?

Répondre

2

À mon humble avis, la réponse est Oui c'est légal. Un service est autorisé à appeler un autre service lorsque cela est approprié. Dans l'exemple particulier, c'est certainement quelque chose que vous voulez faire. La vraie question est comment vous gérez la dépendance. Utilisez DI afin de pouvoir découpler la relation directe entre les deux implémentations.

+0

Vous voulez appeler les 3 services du service d'application. Est-ce que je comprends bien votre réponse? – Markus

+0

Oui, je fais référence à tous les services que vous avez énumérés ci-dessus. –

3

Vous pouvez utiliser le modèle CQRS. UserManager a une méthode de registre (Utilisateur utilisateur)

Il va ajouter l'utilisateur et augmenter le AddUserEvent. AccountService et EmailService implémente EventHandlers et reçoit un objet Utilisateur via EventHandlerArgument. Donc, SecurityService nothin connaît d'autres services et tous ces services sont indépendants.

Questions connexes