2011-02-08 58 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()是命令類型