Wenn Sie den Status auf dem Server speichern, der zum Verarbeiten einer eingehenden Anforderung vom Client erforderlich ist, ist der Server statusbehaftet. Anders gesagt, es hat den Status, dass es speichert und darauf zugreifen muss, um Anforderungen von Clients zu verarbeiten. Ihre Hashmap ist also state, also ist Ihr Server stateful.
Jetzt gibt es nur noch wenige echte Web-Apps, die reichhaltige Dinge tun, die überhaupt nicht zustandsbehaftet sind. Wenn Sie sich als Benutzer anmelden und dann Anforderungen im Auftrag eines angemeldeten Clients verarbeiten möchten, speichern Sie per Definition den Status auf dem Server, der sich auf einen bestimmten Client bezieht, und der Server ist statusbehaftet , auch wenn nur für die Login-Infos.
Ich würde mich also nicht zu sehr darauf einlassen, dass auf dem Server kein Status vorhanden ist. Entscheidend ist, wie viel Status sich auf dem Server befindet, wie teuer (in Bezug auf Verarbeitung, Speicherung usw.) das Speichern und Zugreifen auf diesen Status ist und ob Sie Ihre App mit diesem Status weiterhin horizontal skalieren können. Und wo immer es praktisch ist, behalten Sie den Status im Client bei, nicht auf dem Server. Angenommen, Sie haben eine Client-App mit der Schaltfläche "Nächste Seite". Sie können "nächste Seite" entweder mit dem clientseitigen Status oder dem serverseitigen Status implementieren.
Wenn Sie für die aktuelle Seite des Clients einen serverseitigen Status hatten, können Sie einfach einen Befehl an den Server senden, auf dem Sie die "nächste" Seite anzeigen möchten. Der Server überprüft den Status für diesen Client, erhöht die Seite und gibt dann die Daten für die nächste Seite zurück.
Oder Sie können die aktuelle Seite auf dem Client speichern. Wenn der Client die nächste Seite möchte, nimmt er die aktuelle Seitenzahl, erhöht sie um eins und fordert generisch die spezifische Seitenzahl an, die er als Nächstes anzeigen möchte.
Welche dieser Implementierungen lässt sich Ihrer Meinung nach besser skalieren? Was ist einfacher zu implementieren, wenn der Benutzer eine zweite Registerkarte öffnet, auf der eine andere Seite angezeigt wird? Welches ist einfacher horizontal zu skalieren. Die Antwort auf all diese Fragen ist die, bei der die aktuelle Seite nicht auf dem Server gespeichert, sondern im Client gespeichert wird und nur allgemeine Anforderungen für Seite N an den Server gesendet werden. Wenn Sie diesen Status clientseitig beibehalten, können Sie einfacher einzeln und horizontal skalieren und mehrere Ansichten für denselben Client unterstützen.