previous next Up Title Contents

3.7.5 Das WebObjects-Framework

Das WebObjects Framework, wurde zum Aufbau dynamische Web-Sites konzipiert. Durch den Anschluß an die cgi-bin-Schnittstelle, das Netscape Application Interface (NSAPI) oder das Internet Server Application Progamming Interface (ISAPI) von Microsoft des entsprechenden Web-Servers, ist es in der Lage HTTP-Anfragen zu verarbeiten und dynamische HTML-Seiten als Antwort zu generieren. Hierbei übernimmt WebObjects den Start der Server-Anwendung und die Benutzerverwaltung (Sessions) und andere Aufgaben, die zu einer dynamische Web-Kommunikation notwendig sind.

Die Server-Logik, die die Art und Weise formuliert, wie auf Anfragen reagiert wird, wie Daten dargestellt werden und wie die Seitenabfolge verlaufen soll, kann in den Sprachen WebScript, Objective-C, C++ und Java formuliert werden. Gegenüber anderen Systemen bietet das Enterprise Objects Framework (EOF) den entscheidenden Vorteil, daß es als objektorientiertes Interface von der höchsten Abstraktionsebene bis hin zur Code-Ebene in Verbindung mit WebObject ein komfortables Handling von Datenbankanbindungen ermöglicht.

Eine Web-Seite ist in WebObjects eine sogenannte Komponente, die sich aus drei Dateien zusammensetzt. Die erste Datei ist eine HTML-Vorlage und repräsentiert den statischen Teil der Komponente. In ihr werden die dynamischen Anteile durch <WEBOBJECT>-Tags als Platzhalter gekennzeichnet. Die zweite Datei ist eine Script-Datei, in der Variablen und Methoden der Komponenten beschrieben werden. Anstelle der Script-Sprache können auch Sprachen wie Objective-C oder Java verwendet werden. Die dritte Datei ist eine Deklarationsdatei, die für die Beschreibung der dynamischen Anteile der HTML-Seite verantwortlich ist und sie mit den Variablen und Methoden der Komponenten verbindet.

Abb. 34: Bestandteil einer Komponenete am Beispiel der Main-Komponente

Quelle: Die Grafik ist aus der Online-Dokumentation [WOD98]entnommen.

Die in Abb. 34 aufgezeigte Skriptdatei Main.wos wird bei einem Binärprogramm durch die Objective-C-Datei Main.m und Main.h ersetzt.[22]

Alle drei Komponenten bilden eine abgeschlossene objektorientierte Einheit, die eine alte statische Technologie mit einer neuen dynamischen verbindet und die Vorteile einer ganzheitlichen Objektorientierung, die an dieser Stelle bestimmt nicht mehr diskutiert werden muß, in das Web bringt. Der Skriptanteil dieser Einheit kann durch eine Objective-C Klasse ersetzt werden, um ein Binär-Programm zu erstellen, so das WebObject lediglich als Ausgabeschnittstelle benutzt wird. Ein typisches "Hello World"-Beispiel ist im Anhang zu finden.

Beispiel für eine Main.html und Main.wod:

Main.html

<WEBOBJECT NAME = "NAME_FIELD"><INPUT TYPE = "TEXT"></WEBOBJECT>

<WEBOBJECT NAME = "SUBMIT_BUTTON"><INPUT TYPE = "SUBMIT"></WEBOBJECT>

An dieser Stelle werden die Punkte, an denen ein WebObject-Element eingefügt werden soll, bekanntgegeben und eine Typbeschreibung vorgenommen.

Im obigen Beispiel wird somit ein WebObject-Element mit dem Namen "NAME_FIELD" (der Name ist frei wählbar) vom Input-Type "TEXT" im statischen Teil dieser Komponente vereinbart.

Main.wod

NAME_FIELD:WOTextField {value = nameString};

SUBMIT_BUTTON:WOSubmitButton {action = sayHello};

In diesem Teil wird die Schnittstelle zwischen der statischen HTML-Komponente und dem Script- oder Objective-C-Teil beschrieben. So wird hier das zuvor im statischen Teil bekanntgegebene WebObject-Element mit dem Namen "NAME_FIELD" und dem Input-Type "TEXT", mit einem WOTextField-Objekt von WebObjects verbunden und der Input vom Typ Text einer Variablen namens nameString, die zuvor im Script- oder Objective-C- Teil deklariert wurde, zugewiesen. Die weitere Schnittstelle, die einen Submit-Button repräsentiert, wurde einer Aktion zugeordnet, die der Methode sayHello des Objektes Main entspricht, die ausgeführt wird, wenn der Submit-Button einen Maus-Click im Browser empfängt. Auf die Art und Weise, wie diese Methode implementiert ist, wird im Implementierungsteil weiter unter eingegangen.

Eine WebObjects-Komponente wird wie eine Web-Seite in das Web-Server-Verzeichnis abgelegt. Eine Besonderheit ist, daß die Komponenten gegenüber statischen Seiten geschachtelt sein können. Eine Komponente kann also Unterkomponenten enthalten. Eine Komponente hat ein Interface nach Außen, hinter dem seine Implementierung versteckt ist. Dieses Interface ist der Punkt über den die Unterkomponenten mit ihren Containerkomponenten kommunizieren oder besser in Verbindung stehen. Diese Eigenschaft ist ein großer Vorteil bei der Erstellung von wiederverwendbaren Komponenten.

Zusätzlich zu den Komponenten gibt es in einer WebObject-Anwendung Anwendungs-Objekte für globale Daten und Methoden, und Session-Objekte zur Verwaltung der Session-Daten des jeweiligen Benutzers. Diese Objekte sind wiederum in den verschiedenen zur Verfügung stehenden Implementierungssprachen, die da sind C++, Java und Objektive-C, realisierbar.


[22]

Siehe Anlage 10: Die Basis der Programmiersprache Objective-C.


previous next Up Title Contents