Show TOC

HintergrundKontrollfluss von BSPs Dieses Dokument in der Navigationsstruktur finden

 

Der Kontrollfluss einer Seite wird in der folgenden Abbildung schematisch dargestellt:

Die Abbildung wird im Begleittext erläutert.

Hinweis Hinweis

Es müssen nicht alle Eventhandler verwendet werden, z.B. kann eine BSP lediglich aus dem Layout bestehen, oder sie beinhaltet nur das Layout, OnInitialization und OnInputProcessing.

Da der Eventhandler OnDestroy nur ganz selten verwendet wird, spielt er hier keine Rolle.

Ende des Hinweises.

Hier sind die folgenden Fälle zu unterscheiden:

  • stateless BSPs

  • stateful BSPs

Siehe auch:

Interface IF_BSP_PAGE

Stateless

Im stateless Fall wird der Kontext jedes Mal erstellt, wenn ein Request empfangen wird. Der Kontext wird immer dann zerstört, wenn die Response gesendet wird.

Für die BSP-Laufzeit bedeutet stateless: runtime->keep_context = 0

Beim Erzeugen der Ausgabe einer Seite ist der Verarbeitungsablauf wie in der folgenden Abbildung angegeben.

Output einer BSP (stateless)

Die Abbildung wird im Begleittext erläutert.

Bei der Verarbeitung der Eingaben für eine Seite ist der Verarbeitungsablauf wie in der folgenden Abbildung angegeben.

Input für eine BSP (stateless)

Die Abbildung wird im Begleittext erläutert.

Bei stateless BSPs (der Standard ist stateless), kann die Navigation entweder auf die gleiche Seite durchgeführt werden oder aber auf andere Seiten.

Navigation innerhalb der BSP

Beim Aufruf der Seite wird zuerst nachgesehen, ob es bereits ein Seitenobjekt für diese BSP gibt. Ist dies nicht der Fall, dann wird der Eventhandler OnCreate durchlaufen, wodurch das Seitenobjekt bzw. eine Instanz davon erzeugt wird. Daraufhin folgt der Eventhandler OnRequest. Ist bereits ein Seitenobjekt vorhanden (beim ersten Aufruf tritt dieser Fall i.d.R. nicht auf, ebenso wenig wie in stateless BSPs), so wird direkt in den Eventhandler OnRequest verzweigt. Danach folgen entweder OnInitialization, wenn keine Benutzeraktion stattfindet und OnInputProcessing, wenn Benutzeraktion stattfindet. Von OnInputProcessing aus geht es bei keiner Navigation weiter zum OnInitialization. Weiter geht es mit dem Layout und danach eventuell mit dem OnManipulation, wobei dieser Eventhandler nur sehr selten verwendet wird. Danach wird die angeforderte Seite im Browser ausgegeben. Nun kann Benutzeraktion stattfinden und der Verarbeitungsablauf beginnt erneut.

Navigation auf andere BSPs

Der Verarbeitungsablauf ist ganz ähnlich wie in dem Fall, dass innerhalb einer BSP navigiert wird. Wenn nun aus dem OnRequest eine Navigation auf eine andere Seite stattfindet, dann wird der Eventhandler OnInputProcessing aufgerufen und ausgewertet. Es folgt OnInitialization, danach das Layout, etc.

Stateful

Im stateful Fall wird der Kontext von einem Request zum nächsten gehalten.

Für die BSP-Laufzeit bedeutet stateful: runtime->keep_context = 1

Beim Erzeugen der Ausgabe einer Seite ist der Verarbeitungsablauf wie in der folgenden Abbildung angegeben.

Output einer BSP (stateful)

Die Abbildung wird im Begleittext erläutert.

Bei der Verarbeitung der Eingaben für eine Seite ist der Verarbeitungsablauf wie in der folgenden Abbildung angegeben.

Input für eine BSP (stateful)

Die Abbildung wird im Begleittext erläutert.

Bei stateful BSPs sind drei verschiedene Varianten der Lebensdauer möglich:

  • bis zum Seitenwechsel (lifetime_page)

    Die Seite wird zerstört, wenn eine andere Seite verwendet wird.

  • für die Dauer des Requests (lifetime_request)

    Die Seite wird nach jedem einzelnen Request zerstört, d.h. sie ist nur für die Dauer jeweils eines Requests vorhanden.

  • für die Dauer der Session (lifetime_session)

    Die Seite wird am Ende der Session zerstört.