WebObjects ist eine Softwareumgebung zur schnellen Erstellung und zum Ablauf von Server-Anwendungen im World Wide Web (WWW), die aus Werkzeugen, Frameworks und einem Laufzeitsystem besteht. WebObjects macht die Openstep-Objekttechnologie auf der Server-Seite nutzbar und komplementiert somit gegebenenfalls Objekttechnologie auf der Browser-Seite. WebObjects ist vollständig standardkompatibel und arbeitet mit allen verbreiteten Web-Browsern und -Servern auf der Basis der gängigen Betriebs- und Datenbank-verwaltungssystemen zusammen. Der Einsatzschwerpunkt liegt auf der Entwicklung dynamischer Web-Seiten und -Applikationen.
1. Einsatzgebiet
WebObjects soll die interne und externe Kommunikation von Firmen, die ihre Informationsinfrastruktur über WWW realisieren wollen, in einer objektorientierten Weise ermöglichen. Der Benutzer kann unabhängig von Plattformen über dynamische Seiten im Web Daten abrufen oder eingeben. Dazu ist lediglich ein Web-Browser nötig. Somit wird eine kostengünstige Möglichkeit geboten, plattformübergreifend auf zentrale Dienst-leistungen im Netz zuzugreifen, ohne das Emulationen oder zusätzliche Hardware benötigt werden. Durch einen dynamischen Seitenaufbau kann ein Benutzer die Oberfläche nach seinen Wünschen und mit den von ihm geforderten Daten erstellen. Die Daten entsprechen stets dem aktuellen Stand des angebundenen Datenbestandes.
2. Zielsetzung
Mit WebObject werden folgende Ziele verfolgt:
- Vereinfachung der Erstellung von Web-Anwendungen durch die Vorteile der objektorientierten Programmierung. Die Anwendungslogik wird vollständig auf der Server-Seite beschrieben. Die objektorientierte Basis von WebObjekts erlaubt die Erstellung komplexer Anwendungen auf der Grundlage der Wiederverwendbarkeit.
- Offenheit und Standardkonformität durch Orientierung an dem OPENSTEP-Standard. Das heißt, WebObject-Anwendungen sind auf allen Betriebsystemen ablauffähig, auf denen die Openstep-Objektschicht zur Verfügung steht. Auf WebObject basierende Anwendungen erzeugen standardisierte HTML-Seiten, die von allen HTML-Web-Browsern angezeigt werden können. Spezifische Eigenschaften bestimmter Browser, wie z.B. Java können genutzt werden. Die Zusammenarbeit mit allen HTTP-Servern ist möglich. Sie werden über das standardisierte "Common Gateway Interface" ( CGI) angesteuert.
- Einbindung beliebiger Datenquellen ist möglich. Relationale Datenbanksysteme wie z.B. Oracle, Informix, Sybase sowie OLE-fähige Anwendungen sind Datenquellen, auf die zugegriffen werden kann.
3. Kompatibilität
Hierzu gehört die zuvor genannte Datenbankunabhängigkeit. Die Integration beliebiger Datenquellen ist durch die zusätzliche Verwendung von "Enterprise Objects Framework", eine Klassenbibliothek mit Adaptoren zu verschiedenen Datenquellen, möglich. Eine Betriebssystemunabhängigkeit ist dadurch gegeben, daß WebObject auf dem Openstep-Objektmodell aufsetzt, welches in der Produktform PDO und D´OLE, den Unix-Systemen
Solaris, SunOS, HP/UX, Digital Unix und MS-Windows NT/95 implementiert ist.
4. Leistungsmerkmale
Dynamik: durch das Erzeugen von HTML-Seiten, die den Zustand verschiedenster Datenquellen reflektieren, und Seiten, die auf Anfrage generiert werden. Eine Seitenbeschreibung besteht aus einem statischen Anteil, der sogenannten Schablone, und einer Ablaufbeschreibung in Form eines Programms, wobei in diesem Programm alle Möglichkeiten des Openstep-Objektmodells genutzt werden können. Die eigentliche Seiten-erzeugung wird von WebObjects-Framework übernommen. Der Programmierer braucht sich somit nicht mit den Details von HTML auseinandersetzen.
5. Beispiel einer WebObjects-Anwendung
5.1 Hello World
Die "Hello World Application" besteht aus zwei Seiten. Abbildung 1 zeigt die erste Seite.

Abbildung 1
Das Aussehen ist von Browser zu Browser leicht unterschiedlich. Die Seitenelemente und deren Funktionalität bleiben gleich. Die erste Seite beinhaltet ein Eingabe-Feld, in dem der Namen eingegeben wird. Der Knopf (in Klassenbibliotheken mit Button bezeichnet) mit der Aufschrift submit öffnet eine neue Seite. Gibt man nun einen Name (z.B. Joe) ein und klickt anschließend auf submit, so erscheint eine neue Seite, die der Abbildung 2 entspricht.

Abbildung 2
Die Anwendung HelloWorld hat drei einfache Anforderungen:
- Einlesen des eingegebenen Namens.
- dynamisches Generierung des erforderlichen HTML-Codes, der die zweite Seite darstellt.
- öffnen der zweiten Seiten, wenn der Knopf "Submit" angeklickt wird.
5.2. Erstellung von "Hello World"
Das Erstellen einer WebObject-Applikation erfordert jeweils eine Komponente für jede Web-Seite. Diese Komponenten werden dann in einem von WebObjects und dem Web Server erreichbaren Verzeichnis abgelegt.
Hello World besitzt zwei Komponenten, Main und Hello. Die Komponente für die erste Seite wird grundsätzlich mit Main benannt, da die DafaultApp, die das Grundgerüst jeder Applikation stellt, zuerst nach der Komponente mit dem Namen Main sucht.
Alle Komponenten befinden sich im Normalfall in einem Verzeichnis,
z.B.: <DocumentRoot>/WebObjects/Examples/HelloWorld.
Der Verzeichnisname muß die Extension .wos haben,
5.3 Die Main Komponente
Das Template für die sogenannte "main page" enthält die folgenden HTML-Elemente:
<HTML>
<HEAD>
<TITLE>Hello World!</TITLE>
</HEAD>
<BODY>
<FORM>
What's your name?
<P>
<WEBOBJECT NAME = "NAME_FIELD">
<INPUT TYPE = "TEXT">
</WEBOBJECT>
<WEBOBJECT NAME = "SUBMIT_BUTTON">
<INPUT TYPE = SUBMIT">
</WEBOBJECT>
</P>
</FORM>
</BODY>
</HTML>
Die Deklarationsdatei enthält die folgenden Deklarationen der in der "main page" angegebenen Objekte:
NAME_FIELD: WOTextField {value = nameString;}
SUBMIT_BUTTON: WOSubmitButton {action = sayHello;}
5.4 Das Script für die "main page" enthaelt die Implementierung
id nameString;
- sayHello
{
id nextPage;
nextPage = [WOApp pageWithName:@"Hello"];
[nextPage setNameString:nameString];
return nextPage;
}
Die Template-, Deklarations-, und Skriptdateien beschreiben die Funktionalitäten, die hinter den einzelnen Symbolen liegen.
6. Speichern des Namens
Die Deklaration für das WEBOBJECT-Element NAME_FIELD:
NAME_FIELD: WOTextField {value = nameString;}
spezifiziert das Speichern des eingegebenen Namens und assoziiert das WEBOBJECT-Element NAME_FIELD mit der Variablen nameString aus der Datei Main.wos.
Die Deklaration spezifiziert das WOTextField Objekt, das erstellt wird, um HTML für das NAME_FIELD-Element zu generieren. Der Wert des Attributs nameString wird dem Attribut value zugewiesen.

7. Ausgabe der Hello Page
Die Deklaration für das WEBOBJECT-Element SUBMIT_BUTTON :
SUBMIT_BUTTON: WOSubmitButton {action = sayHello;}
spezifiziert das Speichern des eingegebenen Namens und assoziiert das WEBOBJECT-Element SUBMIT_BUTTON mit der Variablen sayHello aus der Datei Main.wos.
8. Hello Component Files
Template:
<HTML>
<HEAD>
<TITLE>Hello World!</TITLE>
</HEAD>
<BODY>
Hello <WEBOBJECT NAME = "NAME-STRING"></WEBOBJECT>!
</BODY>
</HTML>
Deklaration:
NAME_STRING: WOString {value = nameString;}
