Ich muss ein System erstellen, das aus 2 Komponenten besteht:
-
Ein einziger Server, der Daten verarbeitet und speichert. Außerdem sendet er in regelmäßigen Abständen Aktualisierungen an die Agenten.
-
Mehrere Agenten, die an entfernten Endpunkten installiert sind. Diese sammeln Daten in (oft, aber nicht immer) langwierigen Vorgängen, und diese Daten müssen zum Server gelangen
Ich verwende C# .NET, und idealerweise möchte ich eine standardkonforme Kommunikationsmethode verwenden (d.h. eine, die theoretisch auch mit Java funktionieren könnte, da wir in Zukunft auch Java-Agenten verwenden könnten). Gibt es Alternativen zu Webservices? Was sind meine Optionen?
So wie ich es sehe, habe ich 3 Möglichkeiten, Webdienste zu nutzen, und habe folgende Beobachtungen gemacht:
- Kunde ziehen
- Kein offener Port beim Agenten erforderlich, da er sich wie ein Client verhält
- Müsste den Server nach Updates abfragen
- Server-Push
- Öffnen Sie den Port des Agenten, da er sich wie ein Server verhält.
- Server muss Agenten für Ergebnisse abfragen
- Hybride
- Öffnen Sie den Port beim Agenten, da er sich wie beide ein Client und ein Server
- Kein Polling; Server sendet Aktualisierungen bei Bedarf, Client sendet Ergebnisse, wenn sie verfügbar sind
Die "hybride" Variante (bei der Agenten sowohl Kunden als auch y Server scheint die offensichtliche Wahl zu sein - aber diese Anwendung wird typischerweise in Unternehmens- und Regierungsumgebungen installiert, und ich befürchte, dass sie ein Problem mit dem Öffnen eines Ports beim Agenten haben könnten. Mache ich mir zu viele Gedanken darüber?
Gibt es noch andere Vor- und Nachteile, die ich übersehen habe?