2011-02-08 101 views

回答

28

发布用于通知多个订阅者特定事件。发布端点将具有订阅存储以标识向何处发送消息。发送通常用于向端点发送命令。一条命令告诉端点做某事,不应该期望得到答复(尽管你有时候确实需要答复,而NSB支持这种答复)。

您看不到Send()的目的地的原因是您通过配置指定了目的地。在你的app.config中,你将把消息类型(整个程序集或类)映射到目标。当你这样做时,你不必提供目的地。

14

Bus.Publish:当您不知道消息的去向(0到多个订阅者)时使用。
Bus.Send:当您发送消息到特定处理程序(客户端到服务器)时。

+0

好吧,既然这样,为什么有些send()方法重载没有一个目的地是哪里?困惑... – 2011-02-08 23:13:11

+4

我们更深入地理解语义。发布是一个事件,我们将事件视为“嗨,刚刚发生的事情,我不在乎你如何处理这些信息,而是在这里”,我们将Bus.Send视为命令,其意思是“嘿,我需要你做一些事情,并且我关心结果会发生什么(因此知道我要发送给谁)“ – Matt 2014-03-05 16:35:34

+2

@SeanKearon是的,你在4年前发布了这个,但是对于其他任何人。 send命令的目标可以在配置中定义。你并不是真的想要你的代码配置信息,所以你可以使用更简单的Send()方法,如果它是在你的配置中定义的,它不会将目的地作为参数。 – XenoPuTtSs 2014-11-13 13:50:48

0

后容易Context.Publish()是用于发布事件类型和Context.Send()是命令类型

相关问题