Pregunta

Suponga que he instalado ninguna tarjeta de red en mi equipo, y me gustaría tener una funcionalidad similar a la siguiente:

Proceso 1 publicará mensajes en cierta URI, por ejemplo "uri1"

var publisher = new Publisher("Uri1");
publisher.publish(new Message("Somedata");

Proceso 2 será tanto escuchar los mensajes en "uri1" y publicar los mensajes de "uri2"

var subscriber = new Subscriber("Uri1")
subscriber.MessageReceived += data => Console.Writeline(data.ToString());
var publisher = new Publisher("Uri2")
publisher.Publish(new Message("SomeMoreData"))

Proceso 3 escuchará los mensajes de ambos URI

var subscriber = new Subscriber("Uri1")
subscriber.MessageReceived += data => Console.Writeline(data.ToString());
var anotherSubscriber = new Subscriber("Uri2")
anotherSubscriber.MessageReceived += data => Console.Writeline(data.ToString());

Todos los procesos se ejecutan en el mismo equipo. Después de algunas investigaciones Creo MSMQ es el camino a seguir (el uso de nombres de cola como URIs), pero la pregunta sigue siendo la aplicación. Me encontré con varias posibilidades:

Uso MSMQ directamente
El problema que tengo con este enfoque es que tendría que gestionar las colas de mi ser, por ejemplo, la creación, la población, la purga ... También por lo que leí me puede encontrar muchas dificultades y limitaciones de MSMQ ya que no tengo experiencia con ella

Uso NServiceBus , MassTransit o RhinoServiceBus (todos utilizan MSMQ) Todos ellos parecen competentes, especialmente NServiceBus, pero me parece que no puede averiguar a partir de la documentación de cómo extraer la funcionalidad básica pubsub de cualquiera de ellos para que yo pudiera encapsular en una interfaz similar a la anterior

Uso WCF (más de MSMQ) De nuevo, esto se ve como una buena opción, pero ya que estoy muy lejos de un experto en WCF me gustaría asegurarse de que este es el camino a seguir antes de empezar a profundizar en ella

Nuestro enfoque hasta ahora ha dependido de PGM multidifusión que funcionó bastante bien, pero el nuevo requisito de trabajar sin una tarjeta de red nos obliga a utilizar otro mecanismo para el trabajo fuera de línea, al menos por lo que yo sé

Gracias!

¿Fue útil?

Solución

Al final, se optó por una solución lista para usar la memoria compartida: http://pubsub.codeplex.com/ Las pruebas iniciales implica que funciona bien para nuestro caso

Otros consejos

Bueno, según http://answers.yahoo.com/question/index ? qid = 20080616091430AAAxTJB puede utilizar la dirección de bucle sin una tarjeta de red instalada. Tal vez se puede utilizar esa funcionalidad para seguir utilizando su código existente?

Nota: No he probado esto, era sólo una idea

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top