Stateless-Webanwendung, eine urbane Legende?
Ich versuche zu verstehentoken-based authentication
in diesen Tagen, die behauptet, ein @ zu sestateless authentication
Methode. Und ich traf das Konzept vonstateless web application
.
Below sind einige Themen, über die ich gelesen habe:
Verwenden Sie Spring MVC für die Entwicklung zustandsloser Webanwendungen. (noch keine AntwortStateless Spring MVCWie man eine Java-Webanwendung vollständig zustandslos machtWie kann ich meine Webanwendung zustandslos machen und trotzdem etwas Nützliches tun?Zunächst war ich von dieser Idee begeistert. Aber immer mehr denke ichstateless
ist einpseudo-proposition
.
Angenommen, wir verwenden ein im Client gespeichertes Token zur Authentifizierung. Wie können wir eine Statistik der Online-Benutzer erstellen (vorausgesetzt, es gibt kein Protokoll)? Sollen wir den Token in der DB speichern? Bedeutet das nicht, dass wir Statusinformationen auf dem Server speichern? Und noch mehr, sind die einfachen Benutzerinformationen wie Name, Alter usw. in der DB auch eine Art Statusinformationen?
Ich denke, die eigentliche Frage hier ist nicht, eine Web-App zustandslos zu machen, sondern, damit die Web-App die Statusinformationen ordnungsgemäß verarbeitet, sodass die Skalierbarkeit nicht gefährdet wird.
Das hängt davon ab, wie das Wort @ zu interpretieren isstateless
:
Ich bevorzuge 2, weil es immer ein @ geben kainevitable global state
(zitiert aus @ decezes Kommentar zu seiner Antwort). Unabhängig davon, ob wir Statusinformationen als HTML 5-Webspeicher, HTTP-Header, ausgeblendete Formularfelder oder Cookies speichern, ist der Status weiterhin vorhanden. Nur, dass es nicht auf dem Server gespeichert ist.
Vermisse ich etwas tolles? Könnte jemand etwas Licht ins Dunkel bringen, damit ich von diesem mentalen Kampf befreit werd
ADD 1
Nur über das Buch lesenRESTful Web Services durchLeonard Richardson
. In Kapitel 4 am Ende des AbschnittsStatelessness
, klassifiziert den Zustand inApplication State
undResource State
. So können die oben erwähnten einfachen Benutzerinformationen und -daten wie Bilder usw. als @ klassifiziert werdeResource State
. Und wasstateless
bezieht sich auf istApplication State
. So wird der Code von statuslos nicht verletzt, um @ zu speicherresource state
auf dem Server.
Aber das Buch erwähnt auch das Szenario, in deman application key is used to restrict how many times a user can invoke a web service.
Es gibt zu, dass solche Informationen nicht clientseitig gespeichert werden können. Wenn Sie es auf dem Server speichern müssen, wird der Code für Statuslose verletzt und das Problem der Sitzungsaffinität eingeführt.s wird behauptet, dass Staatenlose Probleme mit der Sitzungsaffinität vermeiden können, erklärt aber nicht, wi Ich verstehe wirklich nicht, wie Staatenlose mit diesem Szenario umgehen können. Kann hier jemand etwas Licht ins Dunkel bringen?