Есть ли разница между обработчиком сообщений и обработчиком команд? - PullRequest
2 голосов
/ 30 июля 2011

Есть ли разница между обработчиком сообщений и обработчиком команд ? Или есть разница между командой и сообщением ?

Редактировать: 3-й кандидат называется командное сообщение ... тьфу.

Ответы [ 2 ]

2 голосов
/ 02 августа 2011

На самом деле, разница не в структуре и не в реализации, а скорее концептуальная - обе эти структуры должны представлять разные концепции.

Сообщение - структура, которая транспортирует некоторую информацию

Command - структура, которая запускает какое-то действие

При этом команда - этоТип сообщения, так как он транспортирует информацию о действии, которое нужно вызвать как минимум (и в большинстве случаев также дополнительные параметры).С точки зрения реализации, и MessageHandlers, и CommandHandlers выглядят очень похоже и зависят от того, что вы хотите сделать с информацией.

Примеры :

UserRegisteredMessage (userName) -сообщение о том, что зарегистрировано используется в системе; обработчик может отобразить эту информацию в пользовательском интерфейсе

RegisterUserCommand (userName) - команда, которая инструктирует нашу систему для регистрации пользователя, это может потребовать каких-то дополнительных действий(например, проверка на уникальность) и может потерпеть неудачу.

1 голос
/ 30 июля 2011

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

Кроме того, в большинстве реализаций сообщениеболее слабо связаны.Вы отправляете сообщение на канале, который может или не может быть прослушан.Команда (обычно не всегда) является более прямой связью во время выполнения.

...