Welches Protokoll soll ich für schnelle Befehls-/Antwortinteraktionen verwenden?

StackOverflow https://stackoverflow.com/questions/1024403

  •  06-07-2019
  •  | 
  •  

Frage

Ich muss ein Protokoll für schnelle Befehls-/Antwort -Interaktionen einrichten. Mein Instinkt sagt mir, ich solle nur ein einfaches Protokoll mit CRLF -getrennten ASCII -Saiten wie SMTP oder POP3 zusammenschließen und es durch SSH/SSL abtunneln, wenn ich es gesichert werden muss.

Während ich dies einfach tun konnte, würde ich es vorziehen, auf einer vorhandenen Technologie aufzubauen, damit die Menschen eine freundliche Bibliothek und nicht die Socket -Bibliotheksschnittstelle verwenden können, die das Betriebssystem ihnen gibt.

Ich brauche...

  • Befehle und Antworten übergeben strukturierte Daten hin und her. (XML, S Ausdrücke, kümmert sich nicht darum.)
  • Die Fähigkeit für den Server, außerplanmäßige Benachrichtigungen an den Client zu machen, ohne befragt zu werden.

Irgendwelche Ideen bitte?

War es hilfreich?

Lösung

AMQP klingt vielversprechend. Alternativ denke ich, dass XMPP viel von dem unterstützt, was Sie wollen, allerdings mit ziemlich viel Overhead.

Abhängig von dem, was Sie erreichen möchten, ist ein einfaches Ad -hoc -Protokoll möglicherweise einfacher.

Andere Tipps

Wenn Sie nur Anfrage/Antwort wünschen, ist HTTP sehr einfach. Es ist bereits ein Anfrage-/Antwortprotokoll. Die Client- und Serverseite sind in den meisten Sprachen weit verbreitet. Es ist gut verstanden.

Der einfachste Weg, es zu verwenden, besteht darin, Befehle als Postanforderungen an den Server zu senden und die Antwort im Körper der Antwort zurückzuschicken. Sie könnten auch HTTP mit Ihren eigenen Verben erweitern, aber das würde es mehr Arbeit machen, um das zwischengespeicherte Proxies und andere Infrastrukturen zu nutzen, die HTTP verstehen.

Wenn Sie Async -Benachrichtigungen wünschen, schauen Sie sich Pub/Sub -Protokolle an (Spread, XMPP, AMQP, JMS -Implementierungen oder kommerzielle Pub/Sub -Message -Broker wie TibCorv, TIBCO EMS oder WebSphere MQ). Das Protokoll oder die Implementierung zur Auswahl hängt von der Zuverlässigkeit, Latenz und Durchsatzbedürfnissen des von Ihnen aufgebauten Systems ab. Ist es beispielsweise in Ordnung, dass Benachrichtigungen fallen gelassen werden, wenn das Netzwerk überlastet ist? Was mit Benachrichtigungen passiert, wenn ein Kunde offline ist? Werden sie abgeworfen oder in die Warteschlange gestellt, wenn sich der Client wieder verbindet.

How about something like SNMP? I'm not sure if it fits exactly with the model your app uses, but it supports both async notify and pull (i.e., TRAP and GET).

That's a great question with a huge number of variables to consider, and the question only mentioned a few them: packet format, asynchronous vs. synchronized messaging, and security. There are many, many others one could think about. I suggest going through a description of the 7-layer protocol stack (OSI/ISO) and asking yourself what you need at those layers, and whether you want to build that layer or get it from somewhere else. (You seem mostly interested in layer 6 and 7, but also mentioned bits of lower layers.)

Think also about whether this is in a safety-critical application or part of a system with formal V&V. Really good, trustworthy communication systems are not easy to design; also an "underpowered" protocol can put a lot of coding burden on application to do error-recovery.

Finally, I would suggest looking at how other applications similar to yours do the job (check open source, read books, etc.) Also useful is the U.S. Patent Office database, etc; one can get great ideas just from reading the description of the communication problem they were trying to solve.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top