una reunion por invitar invitaciones invitacion google evento electronico ejemplos correo compartir como c# wcf web-services tcp udp

c# - reunion - ¿Cuál es la mejor manera de enviar un evento a todas las estaciones de trabajo?



ejemplos de invitaciones por correo electronico (5)

¿Podría tener un servidor esclavo en cada subred que fuera responsable de distribuir los mensajes a todos los clientes en la subred?

Entonces podría tener solo los esclavos conectados al servidor central donde se inician los mensajes.

Espero que alguien pueda guiarme porque estoy atascado ... Necesito escribir un sistema de transmisión de emergencia que notifique a las estaciones de trabajo de una emergencia y aparezca un pequeño mensaje en la parte inferior de la pantalla del usuario. Esto parece bastante simple, pero hay alrededor de 4000 estaciones de trabajo en varias subredes. El sistema debe ser casi en tiempo real, liviano y fácil de implementar como un servicio de Windows.

El problema comenzó cuando descubrí que los enrutadores no reenviar paquetes de difusión UDP xxx255. Más tarde hice un simple gancho de prueba en VB6 para capturar los mensajes de envío de red, pero incluso aquellos no pasaron los enrutadores. También escribí un simple sniffer de paquetes para filtrar paquetes solo para descubrir que los paquetes de red nunca llegaron al destino deseado.

Luego eché un vistazo y exploré usando MSMQ sobre HTTP, pero esto requirió que IIS fuera instalado en la estación de trabajo de destino. Como hay tantas estaciones de trabajo, sería una gran preocupación de seguridad.

En este momento, he terminado un servicio web con devolución de llamada asincrónica que envía un evento a los suscriptores. Funciona perfectamente a pequeña escala, pero una vez que hay más de 15 suscriptores, el rendimiento se degrada considerablemente. Sondear un servidor no es realmente una opción debido a la carga que generará en el servidor (además lo he intentado también)

Necesito tu ayuda para guiarme sobre qué tecnología usar. ¿Alguien ha usado el cometa con tantos clientes o debería mirar WCF?

Estoy usando Visual C # 2005. Por favor, ayúdenme a salir de esta situación.

Gracias


Considere usar mecanismos y eventos de devolución de llamada de WCF. Hay una buena introducción de Juval Lowy.

Otro patrón es implementar llamadas de bloqueo del servicio web . Así es como funciona el chat de GMail, por ejemplo. Sin embargo, tendrá que lidiar con las sesiones y los tiempos de espera aquí. Funciona cuando los clientes están detrás de NAT y Firewalls y no se puede contactar directamente. Pero puede ser demasiado complicado para una alerta simple dentro de la intranet.


Creo que algunos de ustedes están pensando demasiado esto. ¡Ya hay un servicio integrado en cada versión de Windows que proporciona esta funcionalidad exacta! Se llama el servicio Messenger. Todo lo que tiene que hacer es asegurarse de que este servicio esté habilitado y ejecutándose en todos los clientes.

(Aunque no especificó en la pregunta, estoy asumiendo por sus elecciones de tecnología que la población de clientes de esta red es todo Windows).

Puede enviar mensajes usando esta función desde la línea de comando usando algo como esto:

NET SEND computername "This is a test message"

El comando NET SEND también tiene opciones para enviar por el dominio de Windows, o para usuarios específicos por nombre, independientemente de dónde estén conectados, o para cada sistema que está conectado a un servidor de Windows en particular. Esas opciones deberían permitirle evitar fácilmente el problema de la subred, particularmente si usa seguridad basada en dominio en su red. (Es posible que necesite el servicio "Alerter" habilitado en ciertos servidores si está enviando mensajes a través del servidor y no directamente a los clientes).

La versión programática de esto es una API llamada NetMessageBufferSend () que es bastante sencilla. Un análisis rápido de P / Invoke.net encuentra una página para esta API que proporciona no solo las definiciones que necesita para llamar a la API, ¡sino también un programa de ejemplo de C #!

No debería necesitar escribir ningún código del lado del cliente. Probablemente lo más complicado será encontrar el mejor conjunto de llamadas a esta API que obtenga una cobertura completa de la red en su configuración.

ETA: Me acabo de dar cuenta de que el servicio de Messenger y esta API desaparecieron por completo en Windows Vista. Muy extraño de Microsoft para eliminar por completo la funcionalidad de esta manera. Parece que este proveedor tiene un reemplazo compatible para Vista.


Este problema creo que se resuelve mejor con socket.

Abra una conexión al servidor y manténgala abierta.


Esto es exactamente para lo que se diseñó Multicast .

Una transmisión de red normal (por definición) permanece en la subred local y no se reenviará a través de enrutadores.

Las transmisiones de multidifusión, por otro lado, pueden tener varios ámbitos, que van desde la subred local, pasando por el sitio local, incluso hasta el global. Todo lo que necesita es que los varios enrutadores que conectan sus subredes estén juntos para conocer multicast.