webentwicklung-frage-antwort-db.com.de

Können wir den Restful Webservice stateful machen?

Ich habe darüber gelesen, dass Restful-Webservices staatenlos sind. Ich kann auch sehen, dass die meisten Soap-basierten Webservices auch zustandslos sind und bei Bedarf zustandsbehaftet werden können. Wenn also ein auf Seife basierender Webservice stateful ist, wird bei jeder Anforderung eine Sitzungs-ID übergeben, um mit der Sitzung fortzufahren.

Meine Frage ist, warum nicht dasselbe mit Restful Webservices gemacht werden kann. Ich denke, ich sollte in der Lage sein, einen Webservice zu implementieren, der mit derselben Sitzung fortfahren kann, in der die Sitzungs-ID von Restful Webservice übergeben wird.

Meine Frage ist also: Sind RestFul Webservices nur ein Konzept mit einer Leitlinie, um sie nicht zustandsbehaftet zu machen? oder werden Restful-Webservice-Bibliotheken [wie Jersey] überprüft, um die Benutzer davon abzuhalten?

18
Lokesh

Die Zustandslosigkeit von REST soll die Skalierung von Anwendungen sicherstellen. Sie können Status hinzufügen, aber es gibt einen Kompromiss bei der Skalierbarkeit.

Einer der häufigsten Gründe für das Hinzufügen von Status zu REST ist die Authentifizierung. Sobald eine sichere Verbindung hergestellt ist, kann ein sicheres Cookie an den Client gesendet werden. Dieses Cookie wird dann vom Client zu allen Anforderungen für die Sitzung hinzugefügt. Der Server behält den Status bei und lädt diesen Status mit jeder auf dem Cookie basierenden Anforderung.

Betrachten Sie eine einfache Webseite. Wenn Sie den Status nicht beibehalten, können Sie einen Reverse-Proxy einrichten, die Seite im Speicher nach URL zwischenspeichern und diese Ressource zum Laden auf viele Server verteilen. Wenn Sie jetzt den Namen des aktuell angemeldeten Benutzers zu dieser Webseite hinzufügen, können Sie nichts mehr zwischenspeichern (zumindest auf der einfachsten HTTP-Ebene). Die Antwort kann jetzt nur mit einer Kombination aus Authentifizierungs-Cookie und URL zwischengespeichert werden.

13
rich remer

Solange ich weiß, können wir (.net-Entwickler) WS-Bindung in wcf für Stateful-Webdienste verwenden. 

1
AAAA

Der Webdienst, unabhängig davon, ob es sich um Rest oder SOAP handelt, ist standardmäßig statusfrei. Es kann jedoch Anwendungsfälle geben, in denen es erforderlich ist, stateful zu sein. Das Web Services Resource Framework (WSRF), das von OASIS bereitgestellt wird, kann verwendet werden, um einen SOAP Web-Service zustandsbehaftet zu machen. Fügen Sie dem Endpunkt ein ResourceProperties-Attribut hinzu, fügen Sie der WSDL eine ResourceProperty-Operation hinzu, und übergeben Sie sie an Web-Services. 

Um die Statusübertragung zu ermöglichen, können Sie den clientseitigen oder den permanenten Sitzungsstatus der Datenbank verwenden und sie über die Webdienstaufrufe als Attribut im Header oder Methodenparameter übertragen. 

0