Je suis nouveau à propos de CQRS et je veux apprendre l'ordre de travail du modèle. Mon gestionnaire de commande et ma commande sont comme suit:CommandHandler et EventHandler order
public interface ICommandHandler<in TCommand> where TCommand : ICommand
{
void Handle(TCommand command);
}
Lorsque je charge un travail, un gestionnaire de commandes fonctionne.
public class CreateWorkCommandhandler : ICommandHandler<CreateWork>
{
public void Handle(CreateWork command)
{
Save to database...
}
}
Et je n'appelle pas les gestionnaires de commandes dans les classes de contrôleur. J'utilise un CommandExecuter
pour appeler les commandes par type. Je veux envoyer un courriel et envoyer des sms et d'autres choses après le travail créé. Mais je ne peux pas faire ces étapes dans Handle(CreateWork command)
en raison de l'architecture séparée. Je pense que ces étapes sont des événements, est-ce vrai? J'ai donc besoin event
et event handler
types.
public interface IEventHandler<in TEvent> where TEvent : IEvent
{
void Handle(TEvent event);
}
Où puis-je renseigner les événements? Dans CommandExecuter ou CommandHandler J'ai besoin de plusieurs événements pour un événement. par exemple:
public class WorkCreated: IEvent {}
Envoyer un SMS, envoyez un courriel.
Je suis d'accord que le foreach ne convient pas pour les gestionnaires. Il serait préférable de faire handlers.single() pour s'assurer qu'il n'y a qu'un seul gestionnaire pour la commande. – user707727