Ist ReST über Websockets möglich?
Ich bin Planung zu entwickeln, eine web-basierte chat-Anwendung, die Erholsamen Anfragen, übersetzen Sie Sie auf XMPP und liefern Sie an einem XMPP-server.
Verwendung von websockets für diese Art von chat-basierte Anwendung sah vielversprechend aus, wie sich die Ereignisse (oder Antworten) geliefert werden kann asynchron. Aber wenn ich mit websockets als das zugrunde liegende Protokoll für die übertragung der Anfragen vom browser, kann dieser immer noch als ein ReSTful design? Wenn ja, wie sind die URIs, Verben (GET, POST,...) verwenden, werden Parameter dargestellt, die in die websocket-Nachricht? Wickeln Sie Sie in ein xml/json und senden Sie Sie?
Auch, ReSTful-Architektur besagt, dass keine session-state wird auf dem server gespeichert werden. Aber hier in diesem Fall, wenn ein XMPP-client-Sitzung erstellt wird, wird der Zustand der session wird auf dem server gespeichert werden (Verletzung der Staatenlosen Einschränkung)
InformationsquelleAutor der Frage Krishna Chaitanya P | 2012-11-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum würden Sie wollen, zu bauen, eine REST-API auf der Oberseite der Buchse? IMHO der Vorteil einer REST-API ist die Nutzung von standard-HTTP-Protokoll Möglichkeiten wie stateless requests, semantischen Verben wie GET, DELETE bauen eine API, die leicht verständlich sind (client) - Entwickler. Da sockets bieten nicht HTTP-Verben, und so weiter, erstellen Sie eine Art von HTTP-Ebene für Steckdosen, die ist IMHO nicht zumutbar.
In Fall, dass Sie wirklich bauen so eine Sache, ich würde empfehlen die Verwendung des HTTP-Protokolls als einen der Entwurf und die Implementierung der socket-Protokoll wie HTTP.
InformationsquelleAutor der Antwort saintedlama
REST ist ein Architekturstil, der nicht zu verhängen ein Protokoll. Also ja, Sie kann nicht RUHEN mit Web Sockets, REST mit HTTP und REST mit FTP, wenn Sie mögen.
Der Hauptgrund für die Verwendung von HTTP ist, dass es leicht und relativ einfach zu kommunizieren mit jeder Komponente oder Programmiersprache, über HTTP und auch, weil die HTTP-Unterstützung für verteilte Umgebungen mit mehreren Vermittlern: proxies, firewalls...; So können Sie bereitstellen Ihren service auf jeder Topologie und jeder kann darauf zugreifen.
Mein rant:
Wenn Sie ein RESTliban und Roy Fielding ' s dissertation ist die Quelle der Wahrheit, Verben werden nie anerkannt als Teil der semantischen. URIs sind der semantische. Die Verwendung der verschiedenen Verben für die verschiedenen Aktionen wurde eine elegante evolution der REST über HTTP, aber nicht Teil der "Wahrheit". Sie können überprüfen, das Szenario rest-über-HTTP-bewertet von Roy in Kapitel sechs seiner dissertation. Keine Erwähnung zu den Verben. Und merke, es ist ein Evaluierungs-Szenario, das nicht der Spezifikation.
TLDR;
Wenn Sie brauchen, Echtzeit-zwei-Wege-Kommunikation über das internet und der client ist ein web-browser, die beste Wahl ist Web-Sockets. Sie könnte dann die Implementierung einer application-level-Protokoll auf der Spitze der web-sockets-Implementierung einer RESTful Web Service.
InformationsquelleAutor der Antwort Daniel Cerecedo
Ja. Können Sie REST über WebSocket mit Bibliothek, wie
SwaggerSocket.
InformationsquelleAutor der Antwort jdelobel
Ich verstehe nicht, warum Sie würde konvertieren XMPP in RUHE und führen Sie dann REST über WS. Der Punkt des WebSocket-ist das XMPP-Protokoll direkt an den browser, so dass alle übersetzungs-Probleme.
Gibt es JavaScript Bibliotheken, die sprechen können XMPP-vom browser zum server. Alles, was Sie brauchen, ist, um proxy-XMPP-Verkehr ab WS über in TCP und dann direkt in Ihrem XMPP-server. Kaazing hat ein gateway , das Ihnen erlaubt, dies zu tun.
Wenn Sie wollen open source verwenden, müssen Sie schreiben eine JavaScript-XMPP-Bibliothek. Es gibt Beispiele, die zeigen, wie Schreibe ich eine JS-Bibliothek für einfache Protokolle. Sie müssen nur eins finden und erweitern das Konzept um XMPP-Protokoll.
So zur Erinnerung, hier sind die Art der Architektur Aussehen würde:
Ihrem XMPP-Client-code <-> JavaScript-XMPP-Bibliothek <-> WebSocket-über-http <-> WebSocket zu TCP-Proxy-Server <-> XMPP-Server
wo die XMPP-Client-code und die JavaScript-XMPP-Bibliothek im browser ausgeführt, und die WS zu TCP-proxy zusammen mit dem XMPP-server sind alle server-Seite.
InformationsquelleAutor der Antwort Axel
REST-Architekturstil überwiegend setzt ein 2 Personen viz. client und server.
Wie bewegen wir uns mehr in Richtung Echtzeit-web und die Entwicklung von reaktiven Systemen WebSocket-würde prominent austauschen Nutzung der REST-API.
WS erlaubt es, Daten push-und pull-die lehnt das Konzept von server und client.
STOMP,AMQP ,XMPP kann verwendet werden messaging-Protokolle.
Die Daten selbst vielleicht JSON oder Google protocol buffers oder vielleicht Apache Avro.
WebSockets ist nicht gebunden an web-Server, kann aber entwickelt werden, die im stand-alone-Anwendungen wie mobile apps oder desktop-apps zu.
InformationsquelleAutor der Antwort Rohitdev
Ich nur spot neues Thema auf dem blog von einem Unternehmen die Bereitstellung von cloud-Lösung und "Server-Ende/Service als Plattform (SaaS) für Spiele.
Bin ich nicht Werbung für diese Firma, noch habe ich, also ich weiß gar nicht, wie gut oder schlecht Sie sind.
Jedoch, Sie sehr deutlich zu erklären Gründe und was sind die Vorteile der Verwendung von WebSockets in RUHE
Gelesen auf Ihren blog
InformationsquelleAutor der Antwort Briksins
Ich verstehen, dieser post ist sehr alt, wollte aber einwerfen, ein bisschen weiter auf die Vorstellung, dass "Also, wenn ich wählen Sie eine REST-Architektur, die ich verlieren die Fähigkeit für die Echtzeit-Kommunikation?".
In einem Wort, Nein. Eine Reihe von REST-style-Implementierungen ich habe Erfahrung mit leverage REST für die Kompatibilität, Auffindbarkeit, und als ein Mittel, um Skalierung über verschiedene Geräte in den Schatten des Internet der Dinge.
Jedoch, neben der Verwendung von WS, die neben der ERHOLUNG zu erleichtern, in der Nähe von real-time-übertragung. Es gibt auch eine Reihe von Abstraktionen, die wirklich helfen, mit diesem, und ermöglichen Ihnen die Konzentration auf den Aufbau der API und der Entscheidung, wie die RT-Komponenten der verbrauchenden Anwendungen funktionieren sollte.
Ich würde vorschlagen, einen Blick auf Dinge wie Tibco Smart-Sockets, oder SignalR, wenn Sie schauen, um zu bauen ein REST-API und möchte vermeiden, neu zu erstellen, das Rad für Ihren RT braucht.
InformationsquelleAutor der Antwort iHazCode
Ich ein Projekt angelegt, fügt Rückrufe, um die web-socket-send-Funktion: https://github.com/ModernEdgeSoftware/WebSocketR2
Message-IDs etabliert, so kann der Kunde die Implementierung der callbacks. Sie verarbeitet die Nachricht Wiederholungen nach timeouts sowie die Verbindung mit dem server, wenn die Verbindung wird gelöscht. Sie können dann die Struktur der Nutzlast zu sein, wie Erholsam, wie Sie wollen durch das hinzufügen von Verben und Pfade.
Dies ist ähnlich wie bei einem video-Spiel-studio verwendet UDP, um erreichen die Geschwindigkeiten, die Sie benötigen, aber deren net-code implementiert eine Menge von TCP-ähnliche Funktionen für Zuverlässigkeit.
InformationsquelleAutor der Antwort Neo