Die Gestaltung einer REST-API mit req/resp-und pub/sub-Anforderungen
Heutzutage ich bin der Gestaltung einer REST-Schnittstelle für ein verteiltes system. Es ist eine client - /sever-Architektur, aber mit zwei message exchange patterns:
- req/resp: die erholsamsten Ansatz, es wäre eine CRUD-Schnittstelle zum Zugriff/erstellen/ändern/löschen von Objekten, die in der server.
- pub/subs: dies ist mein Haupt-Zweifel. Ich brauche den server zum senden von asynchroner Benachrichtigungen an den Kunden so bald wie möglich.
Suche im web fand ich, dass eine Lösung sein könnte, zu implementieren, REST-Server in der server-und client: Publish/subscribe-REST-HTTP-Einfaches Protokoll web-services-Architektur?
Weitere alternative wäre die Umsetzung blockiert-REST und damit der client braucht nicht zu hören, die in einem bestimmten Anschluss: Mit Sperrung REST-Anforderungen zu implementieren, die das veröffentlichen - /abonnieren
Ich würde gerne wissen, welche Optionen würden Sie eine Schnittstelle implementieren, wie dieser. Danke!
- Haben als mit WebSockets ?
- Ich lese etwas über websockets, aber ich bin weit entfernt, zu verstehen, die Koexistenz zwischen REST-HTTP und websockets
- Sie können Aussehen will in diesem (softwareengineering.stackexchange.com/questions/331101/...)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Web Sockets kann ein Kanal für den Dienst zur update-Kunden Leben. Es gibt andere Techniken wie http-long-polling, wo der client eine "Sperrung" Anfrage (wie Sie bezeichnet es), wo der service hält den Antrag für einen Zeitraum von weniger als einer Zeitüberschreitung (etwa 50 sec) und schreibt eine Antwort, wenn es Daten. Der web-client sofort Probleme eine weitere Anforderung. Diese Schleife erzeugt einen kontinuierlichen Kanal, wo sich Meldungen "gesendet" vom server zum client, aber es ist initiiert von den Kunden (firewalls, proxies, etc...)
Gibt es Bibliotheken wie socket.io, signalR und viele andere, wickeln Sie diese Logik und auch der fallback von websockets zu long-polling anmutig für Sie und abstrahieren die details.
Ich würde empfehlen, das schreiben einige Beispiel-web socket und long polling Beispiele einfach zu verstehen, aber dann verlassen Sie sich auf Bibliotheken, wie oben erwähnt, es richtig zu machen.