Server Push vs Client Pull für Agent-Server-Topologie

Ich muss ein System aus 2 Komponenten erstellen:

Ein einzelner Server, der Daten verarbeitet und speichert. Es sendet auch regelmäßig Updates an die Agenten

Mehrere Agenten, die auf Remote-Endpunkten installiert sind. Diese sammeln Daten in (oft, aber nicht immer) lang laufenden Vorgängen, und diese Daten müssen auf den Server @ gelange

Ich verwende C # .NET und möchte im Idealfall eine standardkonforme Kommunikationsmethode verwenden (d. H. Eine, die theoretisch auch mit Java funktioniert, da wir möglicherweise in Zukunft auch Java-Agenten verwenden). Gibt es Alternativen zu Webdiensten? Welche Möglichkeiten habe ich?

o wie ich es sehe, habe ich 3 Optionen für die Verwendung von Webdiensten und folgende Beobachtungen gemach

Client pullKein offener Port beim Agenten erforderlich, da er sich wie ein Client verhält Müsste den Server nach Updates abfragenServer pushOpen Port beim Agenten, da er sich wie ein Server verhältServer muss Agenten nach Ergebnissen abfragen HybridÖffnen Sie den Port beim Agenten, da er sich wie @ verhälbeid ein Client und ein ServerNo polling; Der Server verschickt bei Bedarf Updates, der Client sendet die Ergebnisse, sobald sie verfügbar sind.

The 'Hybrid' (wo Agenten beide Client sindun server scheint die offensichtliche Wahl zu sein - aber diese Anwendung wird normalerweise in Unternehmens- und Regierungsumgebungen installiert, und ich befürchte, sie haben möglicherweise ein Problem beim Öffnen eines Ports beim Agenten. Habe ich zu viel damit zu tun?

Gibt es noch andere Vor- und Nachteile, die ich verpasst habe?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage