2011-02-08 15 views

Respuesta

28

La publicación se utiliza para notificar a múltiples suscriptores de un evento en particular. Un punto final de publicación tendrá almacenamiento de suscripción para identificar a dónde enviar mensajes. El envío se usa generalmente para emitir un comando a un punto final. Un comando le dice al punto final que haga algo y no debe esperar una respuesta (aunque a veces quiere una respuesta y NSB lo admite).

El motivo por el que no ve un destino para Enviar() es que especifica el destino a través de la configuración. En su app.config mapeará los tipos de mensajes (un conjunto completo o una clase) a un destino. Cuando lo haces, no tienes que proporcionar el destino.

+0

Gracias Adam - eso tiene sentido, no veo el papel que juega la configuración. –

+0

Err, el comentario anterior debería haber sido leído: Gracias Adam, eso tiene sentido ahora que veo el papel que desempeña la configuración. –

+0

Una de las sustituciones para Bus.Send es Bus.Send (destino de cadena, mensaje), por lo que puede usar Bus.Send para enviar a una cola específica. – RandomUs1r

14

Bus.Publish: se utiliza cuando no se sabe hacia dónde se dirige el mensaje (0 a muchos suscriptores).
Bus.Send: cuando está enviando un mensaje a un controlador específico (cliente a servidor).

+0

Vale, pero entonces ¿por qué algunos Enviar() no sobrecargas tienen un destino? Confundido ... –

+4

Tomamos el significado semántico un poco más allá. Publicar es un evento, y tratamos los eventos como "hey, algo acaba de suceder. No me importa lo que hagas con esta información, pero aquí tienes", mientras que tratamos a Bus.Send como comandos, lo que significa "Oye, Necesito que hagas algo, y me preocupo por lo que sucede como resultado (y, por lo tanto, sé a quién se lo envío) " – Matt

+2

@SeanKearon Sí, publicaste esto hace 4 años, pero para cualquier otra persona. El destino del comando de envío se puede definir en la configuración. Realmente no desea información de configuración de código, por lo que puede usar la forma más simple de Enviar() que no toma el destino como un parámetro si está definido en su configuración. – XenoPuTtSs

0

ususally Context.Publish() es para la publicación Tipo de evento y Context.Send() es para Tipo de comando

+1

Bienvenido a SO. Parece que falta algo en tu respuesta? –

+0

yest acabo de editarlo .gracias – Vakar