2009-02-05 14 views
7

Para implementar una aplicación de red que usa multidifusiones para enviar pequeños mensajes periódicos a otros procesos en la red, ¿qué opciones tengo con respecto al uso de API en .Net framework? Además de mi obvia elección actual, la API de System.net.sockets, ¿proporciona WCF un enfoque más simple? ¿O WCF es puramente un mecanismo IPC punto a punto basado en SOA?Soporte de multidifusión en .Net

Nota: Estoy muy familiarizado con los detalles de implementación de la programación de multidifusión. Lo que me interesa escuchar es qué otras opciones ofrece .Net framework.

Respuesta

2

Usted acaba de crear un UDPClient y enviar datos a una dirección de multidifusión (224/4, es decir, cualquier dirección de 224.0.0.0-239.255.255.255).

Sus clientes simplemente escuchan esta dirección como de costumbre.

Ver mi respuesta here para más detalles.

P.S. Aunque WCF es bastante exagerado para una tarea tan simple, es perfectamente posible con WCF. Hay diferentes Message Exchange Patterns allí, yo. mi. las formas en que fluye la comunicación

Lo que necesita es IOutputChannel para el emisor y IInputChannel para los oyentes, estos son patrones orientados a datagramas.

0

WCF es MUY pesado para lo que quiere hacer.

Su mejor apuesta es utilizar el datagrama en la aplicación de conectores. No son demasiado atemorizantes una vez que entiendes la API, pero ciertamente no es la más amigable disponible.

La multidifusión se realiza a través de la dirección que se envía siempre que el administrador de su ISP/red permita datos de multidifusión. WCF no permite intrínsecamente objetivos múltiples AFAIK, cuando crea un proxy, debe apuntarlo a una IP (que podría ser una dirección de multidifusión)

+0

¿Tiene WCF admite expresamente la comunicación de tipo multidifusión?¿Hay alguna documentación sobre esto que pueda ver? – Mystic

+0

Como dije, la multidifusión es una propiedad del Protocolo de Internet, no de WCF ni de ninguna otra biblioteca. Le corresponde al administrador de ISP/red determinar si se admite la multidifusión o no. No creo que pueda escribir en direcciones de multidifusión usando TCP, por lo que WCF no será posible :(. – Spence

+0

Estoy bastante seguro de que WCF admite UDP. –

2

Iba a sugerir que use canales de devolución de llamada (es decir, un pub/sub tipo sistema) implementado en WCF, pero eso requeriría que sus clientes se registren con el 'servidor'.

Iba a mencionar soluciones de mensajería de clase empresarial como Tibco EMS (una implementación de JMS).

Luego presioné Google y encontré este enlace: WCF Multicasting. Hay muchas ideas allí que aún no me he encontrado en mi propia visión inicial de WCF.

+0

Eché un vistazo al último enlace anterior, y particularmente leí sobre PeerChannels, pero luego decidí que todo era demasiado para algo simple que estaba tratando de lograr. Los canales de pares parecen ideales para implementar redes P2P. – Mystic

0

FWIW, su pregunta inicial le preguntó específicamente si WCF podría lograr sus objetivos. Como Quassnoi indicó anteriormente, ciertamente puedes hacer esto usando WCF. Si bien la mayoría de la literatura sobre WCF se centra en la forma en que utiliza su modelo de contrato, es posible y plausible que solo use el modelo de canal y la estructura de enlace.

Si implementa IOutputChannel y IInputChannel, puede crear su propio canal basado en datagramas. ¿Esto se proporciona como parte del marco no? (Y creo que esto también es esencial para su pregunta). Sin embargo, Microsoft proporcionó una muestra de un transporte UDP (que según afirman admite multidifusión). Puede encontrar su muestra en la siguiente URL:

http://msdn.microsoft.com/en-us/library/ms751494.aspx

Cuestiones relacionadas