WebObjects - Vorlesungen

Transcription

WebObjects - Vorlesungen
13
WebObjects
NeXT hat OPENSTEP auch für Solaris und Windows NT implementiert. Bei Windows NT erhält
man ein Laufzeitsystem — viele DLL-Module, machd, nmserver, einen Display PostScript
Window Server sowie pbs — und ein Entwicklungssystem mit vielen UNIX und OPENSTEP
Tools wie Shell, ProjectBuilder, InterfaceBuilder, EOModeler, FileMerge, TextEdit, Draw,
ObjectAlloc, Preview, Yap etc. Zur kommerziellen Nutzung gibt es verschieden mächtige
Lizenzen.
Bei einer deutschen Installation muß man den Window Server und pbs aus StartUp in
Autostart verlagern sowie die Datei
\NextLibrary\Frameworks\AppKit.frameworks\Resources\English.lproj\Printing.strings
nach German.lproj kopieren, damit die Applikationen funktionieren.
WebObjects
WebObjects realisieren Server-seitige objekt-orientierte Programmierung zur dynamischen
Erzeugung von Web-Seiten. Über Adaptoren sind sie mit verschiedenen Web-Servern
kombinierbar, durch den CGI-Adaptor prinzipiell mit allen. Je nach Ausbaustufe (Lite, Pro oder
Enterprise) gibt es Objective C interpretiert, mit Verteilten Objekten und mit dem Enterprise
Objects Framework (EOF) zum Anschluß an Datenbanken. Außerdem gibt es den
WebObjectsBuilder als grafische Entwicklungsoberfläche.
Installation
Bei Mach wird der Installer verwendet und man kann Deployment oder Development wählen,
außerdem wird der Apache-Server mitgeliefert; OmniWeb sollte man besitzen.
Bei HP-UX und Solaris gibt es tar-Dateien und den Apache-Server.
Bei Windows NT gibt es setup und man kann den Umfang (mit oder ohne OPENSTEP NT)
wählen. Hier ist kein Web-Server vorhanden. Man kann zum Beispiel WebSite von
http://software.ora.com/download/ beziehen. In diesem Fall muß man in WOCGI.c bei der
Ausgabe von STATUS vor %d ein beliebiges Wort einfügen, den Adaptor übersetzen und in
WebSite\cgi-shl installieren. Leider erscheint ein leeres Shell-Fenster bei Ausführung einer
Application.
Dokumentation
Die Dokumentation kommt im HTML-Format und kann von www.next.com aktualisiert oder
separat geladen werden. Zur Installation der CGI-Verbindung und der HTML-Seiten muß zwar
kein Server vorhanden sein, aber bei NT müssen die dafür vorgesehenen Kataloge schon
existieren.
Die Tutorials befinden sich in /NextLibrary/Documentation/NextDev/WebObjects und nicht
etwa im Bereich des Web-Servers.
Handarbeit — HelloWorld
http://server/cgi-bin/WebObjects/Examples/HelloWorld
cgi-bin/
WebObjects
WebObjects/
Examples/HelloWorld.woa/
Main.wo/
Main.html
Main.wos
Main.wod
Hello.wo/
(abgebildeter) Katalog für CGI-Skripte.
CGI-Skript, verteilt Anfragen.
Katalog in der Wurzel des Web-Servers.
Katalog, repräsentiert Applikation.
Katalog, erste Web-Seite einer Applikation.
statisches Template, vergleichbar einer .nib-Datei.
dynamisches Skript, vergleichbar einem Controller-Objekt.
Deklarationen, binden Template und Skript.
Katalog, Antwort-Seite.
Kontrollfluß
Der Aufruf einer URL schickt eine Anfrage an eine Applikation; beim ersten Mal an ihre Seite
Main.
Dort wird das Template generiert und als Antwort verschickt. Es kann Web-Objekte und vor
allem andere Templates enthalten, die ihrerseits HTML erzeugen.
Bestimmte Web-Objekte sind an Aktionen gebunden, die von der Seite aus aufgerufen
werden können. Eine derartige Aktion ist im Skript der Seite implementiert und muß eine
nächste Seite liefern, mit der sich der Vorgang wiederholt.
Variablen
Bestimmte Web-Objekte können auch an Variablen gebunden sein, die dann der Aktion zur
Verfügung stehen. setVariable: und variable existieren implizit als Methoden;
Variablennamen und Methodennamen dürfen deshalb nicht gleich sein.
lokal
global
global
Variable existiert in einer Methode.
Variable existiert in einem request/response-Durchgang.
in speziellem Application-Skript: Variable existiert für Applikation.
[[self application] variable]
persistent
session
Variable existiert für Komponente (z.B. Seite).
Variable existiert für Applikation und Benutzer.
[[self session] variable]
Startseite
{HelloWorld.woa/Main.wo/Main.html}
<!-- Beispiel von NeXT (Copyright)
-- Template
-->
<HTML>
<HEAD>
<TITLE>Hello World!</TITLE>
</HEAD>
<BODY>
<FORM>
What’s your name?
<P>
<WEBOBJECT NAME="NAME_FIELD"></WEBOBJECT>
<WEBOBJECT NAME="SUBMIT_BUTTON"></WEBOBJECT>
</P>
</FORM>
</BODY>
</HTML>
{HelloWorld.woa/Main.wo/Main.wos}
// Skript
id visitorName;
// gebunden an NAME_FIELD
- sayHello {
// gebunden an SUBMIT_BUTTON
id nextPage = [[self application] pageWithName:@"Hello"];
[nextPage setVisitorName:visitorName];
return nextPage;
}
{HelloWorld.woa/Main.wo/Main.wod}
/*
* Deklarationen
*/
NAME_FIELD:WOTextField {value = visitorName};
SUBMIT_BUTTON:WOSubmitButton {action = sayHello};
{}
Antwortseite
{HelloWorld.woa/Hellowo/Hello.html}
<HTML>
<HEAD>
<TITLE>Hello World!</TITLE>
</HEAD>
<BODY>
Hello <WEBOBJECT NAME="NAME_STRING"></WEBOBJECT>!
</BODY>
</HTML>
{HelloWorld.woa/Hellowo/Hello.wos}
id visitorName;
{HelloWorld.woa/Hellowo/Hello.wod}
NAME_STRING:WOString {value = visitorName};
{}
WebObjectsBuilder
WebObjectsBuilder ist ein InterfaceBuilder für Web-Applikationen. Er ist etwas
eigenwillig, aber man kann damit relativ leicht die beschriebenen Strukturen pflegen.
In diesem Browser kontrolliert man die Applikation.
fügt neue, leere Komponenten hinzu;
außerdem kann man Komponenten per Drag&Drop holen. Doppel-Click auf
Komponente (Seite).
Application und Session dienen zur Kontrolle dieser Variablen.
öffnet eine
Hier baut man mit Hilfe der Paletten eine Seite auf.
Schriftarten
Verweis-Zustand bzw. Eigenschaft
Ausrichtung
Schriftgröße
Inspektoren
Paletten
Skript-Editor-Fenster
Datenbank-Editor
Optionen bei WODisplayGroup
Löschen (Methoden im Skript-Fenster löschen)
Methode hinzufügen (Binden durch Doppel-Click)
Variable hinzufügen (Binden durch Doppel-Click)
Paletten und Inspektoren
Statische Elemente,
dient zum Einfügen beliebiger Tags.
Der Inspektor zeigt die Verschachtelung der Elemente und kontrolliert Attribute der Elemente
oder der ganzen Seite. Speziell für Tabellen muß auch das Menü benützt werden.
Form-Elemente. Man muß aufpassen, daß nur eine Form mit mehreren Elementen entsteht.
Mir gelang es nicht, die Elemente einer einzigen Form mit einer Tabelle anzuordnen...
Der Inspektor detailliert die Bindung der Form-Elemente an die Skript-Variablen und -Aktionen.
Ohne Bindung bleibt’s eine ‘‘echte’’ Form.
Reine WEBOBJECT-Elemente. Im Hyperlink kann man mit pageName zu einer Seite der
Applikation binden, ohne die Position der Applikation im Server genau kennen zu müssen.
Beispiele
WebObjects Lite
HelloWorld
Visitors
Component
CyberWind
TimeOff
EmployeeBook
DodgeLite
CapitalizeString
WhitePages
TimeOffJava
grundsätzliches Konzept.
Session- und Application-Variablen.
Komponente in einer Seite.
Laden für Surf-Bretter; viele Interface-Stile.
Kalender als Komponenten.
traditionelle Datenbank-Applikation ohne Datenbank. Frames.
Datenbank-Applikation ohne Datenbank.
Java-Klient.
Java-Klient mit Datenbank. (??)
Java-Klient mit Kalender.
WebObjects Pro
HelloWorldCompiled
Monitor
grundsätzliches Konzept.
Verteilte Objekte zur Kontrolle anderer Applikationen.
WebObjects Enterprise (benötigen Oracle)
MovieDemo
DodgeDemo
Movie-Datenbank (EOF-Beispiel).
Dodge-Datenbank.