Ich denke in einer guten Anwendungsarchitektur sollte „Alles“
was zu einer Dialog-Seite gehört, in einer Klasse gekapselt sein. Seiten in einer Web-Anwendung können wir in
Anlehnung an gängige GUI Architekturen als Fenster betrachten. Jede Fensterklasse ist für folgende Aufgaben
verantwortlich:
- Öffnen des Fensters: Generierung des HTML Codes zur Darstellung des Fensters im Browser. Befüllen der variablen Felder im Fenster mit den Ausgabedaten
- Erkennen der Benutzeraktionen im Fenster (Klick auf Buttons oder Menüs) und Aufruf von verknüpften Callback-Funktionen.
- Übernahme der Eingabedaten sofern das Fenster Eingabefelder enthält.
- Prüfung der eingegebenen Daten. Abspeicherung in einem Modell-Objekt.
Soweit so gut. Aber das ist noch nicht alles. Da Anwendungen
im Allgemeinen aus mehr als einem Fenster bestehen, müssen Fenster auch
Mechanismen anbieten, wie Daten von einem Fenster an ein anderes beim Öffnen übergeben
werden und wie bei der Rückkehr von einem Sub-Fenster Ergebnisse übernommen und
das aufrufende Fenster wiedereröffnet werden kann.
Da Web-Anwendungen immer auch Multi-User Anwendungen sind,
müssen Fensterklassen auch in der Lage sein, sich in Benutzer-Sessions
einzuklinken. Das heißt das Fenster muss zum Beispiel wissen, zu welchem
Benutzer welche Eingabedaten gehören, ob
der Benutzer überhaupt angemeldet ist und wenn ja welche Rechte er hat.
Es ist sinnvoll drei Arten von Fenstern zu
unterscheiden: Hauptfenster, nicht-modale
Fenster und modale Fenster bzw. Dialoge. Das GGF Framework bietet jeweils eine
Basisklasse dafür an.
- Hauptfenster öffnen sich beim Start einer Anwendung. Sie müssen daher die Benutzer-Session initialisieren.
- Modale Fenster bzw. Dialoge dienen zur Eingabe von Parametern zu einer Benutzeraktion. Um inkonsistente Zustände zu vermeiden, muss die Interaktion mit dem aufrufenden Fenster gesperrt werden solange der Dialog aktiv ist.
- Nicht-modale Fenster hingegen können unabhängig voneinander du auch mehrfach geöffnet werden.
Diese Mechanismen haben sich bewährt und werden seit bald 40
Jahren in GUI’s eingesetzt. Aus diesem Grund werden diese Entwurfsmuster auch
vom GGF Framework und vom ReinHTML Dialog Designer für die Entwicklung von
Web-Anwendungen unterstützt. Ein einfaches Beispiel für die Anwendung der Entwurfsmuster stellt die "Contacts" Anwendung dar.
In den weiteren Posts werde ich Schritt für Schritt beschreiben, wie eine solche Anwendung entwickelt werden kann.