消息处理程序与命令处理程序之间有区别吗? 或命令与消息之间有区别?
编辑:有第三个名为命令消息的消息......呃。
答案 0 :(得分:2)
实际上,差异不在于结构和实现,而是在概念上 - 这两种结构都代表不同的概念。
消息 - 传输某种信息的结构
命令 - 触发某种行为的结构
也就是说,命令是一种消息,因为它传输有关动作的信息至少要调用(在大多数情况下还有其他参数)。 在实现方面,MessageHandler和CommandHandler看起来非常相似,并且取决于您想要对信息做什么。
实施例:
UserRegisteredMessage(userName) - 一条消息,告知系统中使用的已注册用户,处理程序可以在UI上显示此信息
RegisterUserCommand(userName) - 指示我们的系统注册用户的命令,这可能涉及某种额外的操作(如检查唯一性),并且可能会失败。
答案 1 :(得分:1)
根据我的经验,主要是语义,以及放置模式的位置。消息可能有也可能没有副作用,其中命令暗示它会。此外,我认为命令模式旨在作为客户端上的ui模式(通常,但并非总是如此),其中消息模式意味着网络跳跃的可能性。
此外,在大多数实现中,消息更松散地耦合。您在可能收听或未收听的频道上发送消息。命令(通常,并非总是)在执行时是一种更直接的关系。