Процесс преобразования внешнего события DDD в локальную команду

У меня есть ограниченный контекст, который слушает события из удаленного ограниченного контекста (т.е. UserBecameEligible), и когда они поступают на шину событий, выполняется определенное действие путем сопоставления и вызова локального обработчика команд, то есть:

// command class
public class Sendlert
{
    int UserId {get;set;}
    string Message {get;set;}
}

// handler code
public class SendAlertCommandHandler
{
    public class SendAlert: ICommandHandler<SendAlert>
    {
        public void Handle(SendAlert command)
        {
           // ...
           // this.alertStrategy.Send(command.UserId, comnmand.Message);
        }
    }
}

Чтобы автоматизировать это, я думаю об использовании словаря сопоставления:

Dictionary<Type,Action<object,object>> externalEventToLocalCommands

Где первый тип - это внешний тип события, и функция для вызова из внешнего события в локальную команду, т.е.

object UserBecameEligibelToSendSmsConverter(object obj)
{
    UserBecameEligableEvent evnt = obj as UserBecameEligableEvent;
    return new SendAlert()
    {
        UserId = evnt.UserId,
        Message = "Congrats " + evnt.FirstName + "you are now eligable for an account upgrade".
    }
}

Я не помню, чтобы читать это ExternalEventToLocalCommandTranslator есть ли в Vernon реализующий дизайн, управляемый доменом, какие-либо альтернативные стратегии или названия для вышеперечисленного, которые используют другие эксперты DDD, и какие-нибудь библиотеки с открытым исходным кодом с реализацией для изучения?

0 ответов

Другие вопросы по тегам