Push Server против Client Pull для топологии агент-сервер

Мне нужно создать систему, состоящую из 2 компонентов:

Единственный сервер, который обрабатывает и хранит данные. Также периодически отправляет обновления агентам

Несколько агентов, которые установлены на удаленных конечных точках. Они собирают данные в (часто, но не всегда) длительных операциях, и эти данные должны попасть на сервер

Я использую C # .NET, и в идеале я хочу использовать совместимый со стандартами метод связи (т. Е. Тот, который теоретически может работать и с Java, так как мы вполне можем также использовать агенты Java в будущем). Есть ли альтернативы веб-сервисам? Какие у меня варианты?

На мой взгляд, у меня есть 3 варианта использования веб-сервисов, и я сделал следующие наблюдения:

Потяните клиентаНа агенте не требуется открытого порта, так как он действует как клиентНужно будет опросить сервер на наличие обновленийPush-серверОткройте порт у агента, так как он действует как серверСервер должен опрашивать агентов для результатовГибридныйОткройте порт у агента, так как он действует каки то и другое клиент и серверНет опроса; сервер выдвигает обновления при необходимости, клиент отправляет результаты, когда они доступны

«Гибрид» (где оба агента являются клиентамиа также сервер кажется очевидным выбором - но это приложение обычно устанавливается в корпоративной и правительственной среде, и я обеспокоен тем, что у них может быть проблема с открытием порта на агенте. Я слишком много на этом зацикливаюсь?

Есть ли другие плюсы и минусы, которые я пропустил?

Ответы на вопрос(4)

Ваш ответ на вопрос