Anfang des InhaltsbereichsHintergrunddokumentation Stateful oder stateless programmieren? Dokument im Navigationsbaum lokalisieren

Wie schon unter Strukturlink Stateless und Stateful Modell beschrieben, wird von dem zugrundeliegenden Framework sowohl der stateful (Benutzerkontext im SAP-System wird gehalten) als auch der stateless (Benutzerkontext wird für jeden Request neu auf- und wieder abgebaut) Modus unterstützt.

Die folgende Grafik stellt diesen Sachverhalt dar.

Diese Grafik wird im zugehörigen Text erklärt

  1. Der erste Benutzer betritt den Shop.
  2. Der zweite Benutzer betritt den Shop.
  3. Der erste Benutzer tut ein Buch in seinen Einkaufskorb.
  4. Der dritte Benutzer betritt den Shop.
  5. Der dritte Benutzer tut ein Buch in seinen Einkaufskorb.
  6. Der erste Benutzer gibt seine Bestellung auf.
  7. Der zweite Benutzer führt eine Aktion aus.

 

Im stateless Fall sieht der Verlauf so aus:

Diese Grafik wird im zugehörigen Text erklärt

Hier deuten die Zahlen an, welcher Benutzer gerade eine Aktion durchführt. Die Reihenfolge ist aufgrund des Zeitverlaufs klar.

Wann stateful, wann nicht?

Beim Entwickeln einer BSP-Applikation müssen die Vor- und Nachteile von stateful und stateless gegeneinander abgewogen werden.

Soll ein Status (etwa die Objekte in einem Einkaufskorb) über mehrere Seiten gehalten werden, kann dies durch den stateful Modus oder die Verwendung von Cookies auf der Clientseite erreicht werden. Wird mit stateful Modus gearbeitet, so muss nicht über die ganze Ablauflogik der BSP-Applikation der Benutzerkontext gehalten werden. Es ist auch denkbar, die stateful Arbeitsweise nur für die Zeitspanne festzulegen, wo der Zustand gehalten wird. Es kann jederzeit wieder durch das Kommando RUNTIME->KEEP_CONTEXT = 0 auf stateless umgeschaltet werden.

Für Applikationen, die keine Statusinformationen brauchen, ist stateless (Default) sinnvoller, da nicht unnötig Ressourcen im SAP-System belegt werden.

Wie wird der Modus eingestellt?

Bei der Erstellung einer BSP-Applikation kann dies durch Zugriff auf das runtime-Objekt dynamisch oder für die ganze BSP-Applikation in der Entwicklungumgebung eingestellt werden.

Dies ist im Abschnitt Einstellung als stateful oder stateless beschrieben.

Stateful bedeutet hier, dass das Objekt application, das durch die Anwendungsklasse (siehe auch Applikationsklasse einer BSP-Applikation) festgelegt ist, gehalten wird. Im stateless Modus wird das Objekt zurückgesetzt.

Dies soll anhand einer kleinen Beispielapplikation demonstriert werden:
Eine kleine Beispliel-BSP-Applikation

Ende des Inhaltsbereichs