Envio de servidor versus recebimento de cliente para topologia agente-servidor

Preciso criar um sistema composto por 2 componentes:

Um único servidor que processa e armazena dados. Também envia periodicamente atualizações para os agentes

Vários agentes instalados em terminais remotos. Eles coletam dados em operações de execução longa (geralmente, mas nem sempre), e esses dados precisam chegar ao servidor

Estou usando o C # .NET e, idealmente, quero usar um método de comunicação compatível com os padrões (ou seja, que teoricamente também possa funcionar com Java, pois também podemos usar agentes Java no futuro). Existem alternativas aos serviços da web? Quais são as minhas opções?

A meu ver, tenho três opções usando serviços da Web e fiz as seguintes observações:

Atração do clienteNenhuma porta aberta é necessária no agente, pois ele age como um clienteSeria necessário consultar o servidor para atualizaçõesEnvio do servidorPorta aberta no agente, pois age como um servidorO servidor deve pesquisar agentes para obter resultadosHíbridoPorta aberta no agente, pois age comoambos um cliente e um servidorNenhuma pesquisa; servidor envia atualizações quando necessário, o cliente envia resultados quando estão disponíveis

O 'híbrido' (onde os agentes são ambos clientese servidor parece a escolha óbvia - mas esse aplicativo normalmente será instalado em ambientes corporativos e governamentais, e estou preocupado que eles possam ter um problema ao abrir uma porta no agente. Estou pensando muito nisso?

Existem outros prós e contras que eu perdi?

questionAnswers(4)

yourAnswerToTheQuestion