2016-08-31 3 views
0

Является ли ответственность CommandBus как отправкой, так и обработкой команд или просто обработкой команд?Обязанности CommandBus

Это правильно определить интерфейс, как показано ниже:

interface ICommandBus 
{ 
    void SendCommand(ICommand commad); 
    void HandleCommand(ICommand commad); 
} 

Верно ли, что интерфейс имеет как передавать и обрабатывать методы?

Отправить отвечает отправить команду через шину или конкретные получатель

Ручки для обработки конкретной команды, если это возможно

ответ

2

Commandbus несет ответственность за команды диспетчеризации в различные соответствующие обработчик команд. Командные команды обычно не входят в Commandbus.

0

Команда автобус будет отвечать за

  1. диспетчерских команд
  2. Регистрации/открытие обработчиков.

Командная шина должна хранить регистр обработчиков, которые фактически обрабатывают команды при их отправке, поэтому ему необходимо знать, какие команды отправлять на какие обработчики.

Как уже упоминалось в комментариях, это, вероятно, будет отдельный интерфейс, или сделано через какой-то другой процесс стиль открытие

+0

Хотя это правда, что CommandBus должен знать обработчики, принцип интерфейса сегрегация говорит нам о том, что 'Register'-method, вероятно, не представляет интереса для клиентов, которые просто хотят отправлять команды на шину. ((В частности, CommandBus может использовать другие методы или обнаружение обработчика команд под капотом (например, поиск по модулю), что делает метод регистрации на интерфейсе устаревшим.)) –

+0

Да хорошие моменты – tomliversidge