Server Push vs Client Pull para la topología agente-servidor

Necesito crear un sistema que consta de 2 componentes:

Un único servidor que procesa y almacena datos. También envía periódicamente actualizaciones a los agentes.

Múltiples agentes que están instalados en puntos finales remotos. Estos recopilan datos en (a menudo, pero no siempre) operaciones de larga duración, y estos datos deben llegar al servidor

Estoy usando C # .NET, e idealmente quiero usar un método de comunicación que cumpla con los estándares (es decir, uno que podría funcionar teóricamente con Java también, ya que también podríamos usar agentes Java en el futuro). ¿Hay alguna alternativa a los servicios web? ¿Cuáles son mis opciones?

A mi modo de ver, tengo 3 opciones utilizando los servicios web, y he hecho las siguientes observaciones:

Tirón del clienteNo se requiere puerto abierto en el agente, ya que actúa como un clienteTendría que sondear el servidor en busca de actualizacionesServidor pushAbra el puerto en el agente, ya que actúa como un servidorEl servidor debe sondear agentes para obtener resultadosHíbridoAbra el puerto en el agente, ya que actúa comoambos un cliente y un servidorSin encuestas; el servidor envía actualizaciones cuando es necesario, el cliente envía resultados cuando están disponibles

El 'híbrido' (donde los agentes son ambos clientesy El servidor parece la opción obvia, pero esta aplicación generalmente se instalará en entornos empresariales y gubernamentales, y me preocupa que puedan tener un problema al abrir un puerto en el agente. ¿Estoy pensando demasiado en esto?

¿Hay otros pros y contras que me haya perdido?

Respuestas a la pregunta(4)

Su respuesta a la pregunta