Control-Lebenszyklus

Der Control-Lebenszyklus beschreibt, welche System-Funktion des Controls zu welchem Zeitpunkt durch das System aufgerufen wird. Bei dem Control-Lebenszyklus gibt es zudem eine Unterscheidung, ob sich das Control auf einer HMI-Seite befindet, für die das Vorladen aktiviert ist.

Der grundsätzliche Control-Lebenszyklus wird durch die folgende Grafik beschrieben:

Control-Lebenszyklus 1:

Erläuterungen:

  1. Der Konstruktor wird während der Control-Instanziierung aufgerufen.
  2. Die PrevInit-Funktion wird nach dem Konstruktor aufgerufen, bevor die Attribut-Setter-Funktionen aufgerufen werden.
  3. Die Attribut-Setter-Funktionen werden nach der PrevInit-Funktion aufgerufen.
  4. Die Init-Funktion wird nach den Attribut-Setter-Funktionen aufgerufen. Zu diesem Zeitpunkt sind die Control-Attribute durch die Attribut-Setter-Funktionen initialisiert und besitzen gültige Werte.
  5. Die Attach-Funktion wird nach der Init-Funktion aufgerufen, nachdem das Control zum DOM der HMI-Seite hinzugefügt wurde.
  6. Die Detach-Funktion wird aufgerufen, nachdem ein Control aus dem DOM der HMI-Seite entfernt wurde (z. B. beim Umschalten der Seite).
  7. Die Destroy-Funktion wird aufgerufen, nachdem das Control aus dem DOM der HMI-Seite entfernt wurde und das System die Controls zerstört. Zudem kann die Destroy-Funktion explizit durch eine andere Stelle aufgerufen werden (z. B. bei der Zerstörung von untergeordneten Controls).

HMI-Seite: Preload deaktiviert

Im Normalfall ist das Vorladen einer HMI-Seite deaktiviert („Preload this partial: false“ als Einstellung bei einer Content-Datei), wodurch die Controls nicht im Cache des Browsers gespeichert werden. Das erhöht die Geschwindigkeit des initialen Ladevorgangs des HMIs, kann aber zu einer Reduzierung der Ladegeschwindigkeit von einzelnen HMI-Seiten führen, auf denen viele Controls instanziiert sind. Weiterhin ist der Speicherverbrauch verringert, da die Seiten nicht mehr im Speicher sind, wenn sie nicht aktiv sind.

In diesem Fall wird der Konstruktor des Controls aufgerufen, sobald die Seite geladen wird (z. B. beim Umschalten auf die Seite oder beim Laden der Startseite). Anschließend folgen die PrevInit-Funktion, die Attribut-Setter-Funktionen, die Init-Funktion und die Attach-Funktion. Sobald die Seite entladen wird (z. B. beim Wechseln auf eine andere Seite), erfolgt ein Aufruf der Detach-Funktion und anschließend die Destroy-Funktion. Der Lebenszyklus der Controls beginnt mit dem Laden der HMI-Seite erneut.

Control-Lebenszyklus 2:

HMI-Seite: Preload aktiviert

Ist das Vorladen für eine HMI-Seite aktiviert („Preload this partial: true“ als Einstellung bei einer Content-Datei), werden die Controls im Cache des Browsers gespeichert. Das erhöht die Ladegeschwindigkeit einer einzelnen HMI-Seite, kann aber zu einer Reduzierung des initialen Ladevorgangs des HMIs führen. Weiterhin ist der Speicherverbrauch erhöht, da alle vorgeladenen Seiten immer im Speicher sind, auch wenn sie nie aktiviert werden.

In diesem Fall wird der Konstruktor des Controls bereits aufgerufen, sobald der initiale Ladevorgang des HMIs durchgeführt wird. Anschließend folgen die PrevInit-Funktion, die Attribut-Setter-Funktionen und die Init-Funktion. Die Attach-Funktion des Controls wird erst aufgerufen, wenn die HMI-Seite geladen wird, auf der das Control instanziiert ist. Die Detach-Funktion wird aufgerufen, sobald die HMI-Seite entladen wird. Anschließend erfolgt kein automatischer Aufruf der Destroy-Funktion. Das Control bleibt im Cache des Browsers gespeichert und sobald die HMI-Seite erneut geladen wird, erfolgt direkt der Aufruf der Attach-Funktion.

Control-Lebenszyklus 3:

HMI-Seite: KeepAlive aktiviert

Ist KeepAlive für eine HMI-Seite aktiviert („KeepAlive this partial: true“ als Einstellung bei einer Content-Datei), werden die Controls im Cache des Browsers gehalten. Das erhöht die Ladegeschwindigkeit einer einzelnen HMI-Seite wenn diese mehrfach aufgerufen wird. Beim ersten Wechsel auf eine Seite werden dessen Controls erstellt, beim Verlassen jedoch nicht zerstört. Damit ist der Speicherverbrauch nur leicht erhöht, da nur die Seiten im Speicher verbleiben, welche einmalig aktiviert wurden.

Seiten mit KeepAlive werden daher ähnlich wie bei Preload im Speicher gehalten, wenn sie nicht mehr benötigt werden. Im Gegensatz dazu werden diese Seiten jedoch nicht initial geladen. Somit ist ein schnelles Laden der gesamten Applikation gewährleistet.

In diesem Fall wird der Konstruktor des Controls aufgerufen, sobald die Seite geladen wird (z. B. beim Umschalten auf die Seite oder beim Laden der Startseite). Anschließend folgen die PrevInit-Funktion, die Attribut-Setter-Funktionen und die Init-Funktion. Die Attach-Funktion des Controls wird erst aufgerufen, wenn die HMI-Seite geladen wird, auf der das Control instanziiert ist. Die Detach-Funktion wird aufgerufen, sobald die HMI-Seite entladen wird. Anschließend erfolgt kein automatischer Aufruf der Destroy-Funktion. Das Control bleibt im Cache des Browsers gespeichert und sobald die HMI-Seite erneut geladen wird, erfolgt direkt der Aufruf der Attach-Funktion.

Control-Lebenszyklus 4: