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.