Aspekte moderner Web-Applikationen - Das IICM
Transcription
Aspekte moderner Web-Applikationen - Das IICM
Technische Universität Graz Institut für Informationsverarbeitung und Computergestützte neue Medien Diplomarbeit aus Telematik Aspekte moderner Web-Applikationen Gegenwärtige Technologien und Server im Überblick, sowie in der Praxis Georg Wurzenberger [email protected] Graz, März 2000 Betreuer: Dipl.-Ing. Harald Krottmaier Begutachter: O. Univ.-Prof. Dr .phil. Dr. h.c. Hermann Maurer Meinen Eltern, Roswitha und Johann Wurzenberger, meinem Bruder Johann, meiner Schwester Maria und meiner Freundin Claudia. Kurzfassung Die derzeit stark steigende Verbreitung von Web-basierenden Applikationen – kurz WebApplikationen – im Bereich des Inter- und Intranet bringt zwei Entwicklungen zum Ausdruck: Einerseits die Abkehr vom herkömmlichen Client/Server-Modell und andererseits einen Wechsel im Benutzungsverhalten von Software. Der Web-Browser als Thin-Client verdrängt zunehmend spezialisierte Client-Software und etabliert sich nebenbei als bevorzugtes User-Interface des Anwenders. Der momentane Hype um E-Commerce und E-Business unterstützt diese Entwicklung noch zusätzlich. Mit vergleichbarer Geschwindigkeit verändert sich das Angebot vorhandener ServerSoftware, die als Plattform für Web-Applikationen in Frage kommt. Gleiches gilt für die Vielzahl unterstützter Web-Technologien, die sehr stark in ihrer gebotenen Leistungsfähigkeit zu differenzieren sind. Eine One-size-fits-all“ Lösung bleibt daher auch Web” Applikationen a priori verwehrt. In der vorliegenden Arbeit wird die Bandbreite erhältlicher Server-Software gesichtet, nach definierten Sparten geordnet und auf ihre Funktionalität hin untersucht. In der Folge werden die Anwendungsmöglichkeiten der zur Zeit populärsten Web-Technologien mit praktischen Beispielen schwerpunktmäßig diskutiert. Dabei werden vor allem die Kommunikationsschnittstellen zu externen Datenbanken bewertet. Anschließend werden der Hyperwave Information Server und der Apache HTTP Server, aus der Perspektive des Applikationsentwicklers auf ihre programmtechnischen Möglichkeiten durchleuchtet. Details einer für den kommerziellen Bereich implementierten Web-Applikation illustrieren im Folgenden die Programmierschnittstellen des Hyperwave Information Servers. Schlußfolgerungen aus der theoretischen Untersuchung und der praktischen Umsetzung beschließen diese Arbeit. 3 Abstract We live in the age of the internet, which influences to an increasing extent our daily lives and society as a whole. We need not go shopping to the grocery any longer, we just do a mouse click and buy everything via the internet. This is what we understand by e-commerce. But what is this hype all about? Which technologies and standards are needed to set up things like e-shops? This thesis will discuss all these topics. At the centre of these considerations are general issues in web-applications, which are the technical basis for all e“-related matters at present. Starting from a general overview ” of the existing server market and its segmentation in special types some selected webtechnologies are examined and tested for their database connectivity. The Hyperwave Information Server and the Apache HTTP Server, two conceptionally completely different servers, are discussed in greater detail in terms of their programming techniques. In addition, implementation aspects of the Hyperwave-based web application CO2, which is used as an online content and helping system are described. The section of conclusions from the theoretical and practical work performed for this thesis, closes with a general outlook on future developments. 4 Danksagung Ich danke den Mitarbeitern des IICM um Professor Hermann Maurer für ihre stets sehr freundliche und tatkräftige Unterstützung in der Zeit meiner aktiven Projektmitarbeit am Institut. Besonderer Dank gebührt dabei Harald Krottmaier und Helmut Leitner, mit denen ich bei zwei Projekten zusammenarbeiten durfte und von deren Wissen ich sehr profitieren konnte. Dank gilt auch dem Institut für AMFT, das mir für die Zeitdauer meiner Diplomarbeit einen Arbeitsplatz zur Verfügung gestellt hat und mit Christian Meisl für den LATEX-Support sorgte. Meinen Eltern, Roswitha und Johann Wurzenberger, möchte ich an dieser Stelle für ihre Liebe und finanzielle Unterstützung während des gesamten Studiums meinen innigsten Dank aussprechen. Derselbe Dank gilt auch meinem Zwillingsbruder Johann, von dessen Erfahrungen im wissenschaftlichen Publizieren ich sehr profitieren konnte. Leider habe ich unseren internen Wettkampf um die schnellere Studienzeit verloren. Das nehme ich aber mit Würde und Gelassenheit, denn ich weiß ja, wer der bessere von uns beiden ist . Bei meiner interaktiven Rechtschreibkorrektur namens Birgit Färber bedanke ich mich herzlich für ihre sorgfältige Arbeit. Schließlich und endlich bedanke ich mich bei meiner Freundin Claudia Holzer, die mich im Laufe dieser Arbeit sehr oft entbehren musste. 5 Ich versichere hiermit, diese Arbeit selbstständig verfaßt, andere als die angegebenen Quellen und Hilfsmittel nicht benutzt und mich auch sonst keiner unerlaubten Hilfsmittel bedient zu haben. Unterschrift des Autors: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aspekte moderner Web-Applikationen Gegenwärtige Technologien und Server im Überblick, sowie in der Praxis © Georg Wurzenberger , Graz im März 2000. a Diese Arbeit wurde unter Linux mit dem Schriftsatzsystem LATEX erstellt, das sich dabei als sehr ausgereiftes Werkzeug zur Erzeugung qualitativ hochwertiger PDF-Dokumente erwiesen hat. Sämtliche nicht referenzierte Abbildungen wurden mit GIMP oder xfig erstellt. Abbildung 2.8 und 4.3 wurden mit dem Einverständnis von Stefano Mazzocchi eingebunden. Verschiedene Formate dieser Arbeit sind unter der Adresse ftp://www.amft.tu-graz.ac.at/pub/documents/gwurze/da zu finden. a [email protected] 6 Inhaltsverzeichnis 1 Einleitung 10 1.1 Vorausgehende Bemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.2 Kapitelübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2 Web-Applikationen 2.1 2.2 2.3 15 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.2 Vorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.1.3 Nachteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.1.4 Anwendungsbereiche . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Server Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.1 Server Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.2 Web-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.2.3 Application Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.2.4 Information Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Web-Technologien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.3.1 SSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.3.2 CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.3.3 FastCGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.3.4 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.3.5 Server-Side JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.3.6 Java Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.3.7 JavaServer Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7 Inhaltsverzeichnis Inhaltsverzeichnis 3 Hyperwave Information Server 3.1 3.2 60 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.1.1 Entstehung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.1.2 Design Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.1.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.1.4 Server Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.1.5 Unterstützte Plattformen . . . . . . . . . . . . . . . . . . . . . . . 70 3.1.6 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 3.1.7 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.2.1 PLACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.2.2 JavaScript Object Model . . . . . . . . . . . . . . . . . . . . . . . 75 3.2.3 Document Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4 Apache HTTP Server 4.1 4.2 81 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.1.1 Ziele des Apache Server Project . . . . . . . . . . . . . . . . . . . . 82 4.1.2 Entstehung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.1.3 Unterstützte Plattformen . . . . . . . . . . . . . . . . . . . . . . . 82 4.1.4 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.1.5 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.2.1 mod include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.2.2 mod perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.2.3 mod php3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.2.4 mod jserv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 5 Projekt CO2 5.1 5.2 95 Allgemeiner Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.1.1 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.1.2 Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.1.3 Kontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 5.1.4 Programmieraufgaben . . . . . . . . . . . . . . . . . . . . . . . . . 98 hwlib - Eine Objektbibliothek . . . . . . . . . . . . . . . . . . . . . . . . . 99 8 Inhaltsverzeichnis 5.3 5.4 Inhaltsverzeichnis 5.2.1 Objektorientierte Programmierung mit JavaScript . . . . . . . . . 99 5.2.2 Funktionalität im Überblick . . . . . . . . . . . . . . . . . . . . . . 101 5.2.3 Objekt-Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Struktur und Requestabarbeitung . . . . . . . . . . . . . . . . . . . . . . . 104 5.3.1 File-Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.3.2 CO2-Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.3.3 Requestabarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Anmerkungen zum Projekt . . . . . . . . . . . . . . . . . . . . . . . . . . 110 5.4.1 Probleme während des Projektverlaufes . . . . . . . . . . . . . . . 110 5.4.2 Derzeitiger Projektstatus . . . . . . . . . . . . . . . . . . . . . . . 111 6 Schlußfolgerungen 112 6.1 Schlußfolgerungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Abkürzungen 118 Listings 122 Literaturverzeichnis 123 A Attribute der perfekten Web-Applikation 129 B e-Manie 130 9 1 Einleitung Web applications arent’t for me. What about you? a . Jim Seymour a Ready for Web Apps? [Seymour, 1999a]. Wir leben im Zeitalter des Internet, das gegenwärtig mit größter Vehemenz die etablierten Regeln der Gesellschaft und Marktwirtschaft neu definiert. Freunde ruft man beispielsweise nicht mehr an, sondern trifft sie im Chat. Parkplatzsuche und Warteschlangenfrust beim Einkaufen sind passé, seit Einkaufskörbe nicht nur wie gewohnt aus Metall, sondern auch virtuell sind. Das Internet macht es möglich: Einfach und schnell. Das World Wide Web – kurz Web –, als populärster Teil des Internet, unterstützt wesentlich mit dem momentanen Hype um e-Commerce und e-Business diesen Veränderungsprozess. Die web-zentrierte Ansicht von Problemen drängt sich in diesem Kontext verstärkt in den Mittelpunkt der Software-Entwicklung. Web-basierende Anwendungen – kurz Web-Applikationen – liegen voll im Trend und kämpfen offensiv um den Markt gewohnter Desktop-Anwendungen, die dadurch völlig verschwinden könnten [Berst, 1998]. Das Konzept des Webtop als Ersatz des langgedienten Desktop nimmt immer realere Formen an [BusinessWire, 2000] und verlagert dabei die Applikationslogik wieder in Richtung eines leistungsstarken Server (Fat-Server). In nostalgischer Verwandtschaft zur Zeit vor dem Durchbruch des Client/Server-Modells werden Thin-Clients aufgrund der zu erwartenden niedrigeren Kosten und des niedrigeren Wartungsaufwandes [Rice, 1999] als Lösung auf der Client-Seite propagiert. Kostenlose Internet Services sind der erste Schritt in diese Richtung und sie erfahren bereits sehr großen Zuspruch von der Anwendergemeinde. Technisch gesehen handelt es sich dabei um spezielle Web-Applikationen, die bereits jetzt teilweise dasselbe Leistungs- 10 1 EINLEITUNG spektrum besitzen, wie ihre Vorbilder am Desktop. In diesem Zusammenhang gehört die breite Masse web-basierender E-Mail Dienste zur bekanntesten Gruppe unentgeltlicher Internet Services. Einen groben Überblick, inwieweit Desktop-Anwendungen schon durch äquivalente Web-Applikation realisiert wurden, vermittelt die folgende Auflistung bekannter Internet Services mit jeweils einer Beispielsreferenz: • E-Mail: www.hotmail.com • Terminplaner: www.when.com • Landkarten: www.mapquest.com • Virtueller Desktop: www.desktop.com • Speicherung von Daten: www.docspace.com • Office Anwendungen: www.thinkfree.com Bei den angeführten Internet Services handelt es sich ausschließlich um freie über das Web angebotene Dienste, die oft sehr große Anforderungen an die Server-Software stellen und als Web-Applikation dieselbe Komplexität erreichen, wie die entsprechenden Desktop-Anwendungen. Neben dem Internet bildet das Intranet den zweiten großen Anwendungsbereich für Web-Applikationen. Im einen Fall versuchen Unternehmungen immer häufiger ihre Schwierigkeiten, die durch historisch gewachsene Applikationslandschaften im Intranet auftreten, mit Web-Applikationen in den Griff zu bekommen. Im anderen Fall wollen Unternehmen ihre erfolgreich im Intranet laufenden Applikationen schlicht web-fähig“ ” machen und den dabei entstehenden Vorteil der einfacheren Wartung genießen. In der Tat ist die momentan verfügbare Server-Software gerade für die Verbindung heterogener Applikationsstrukturen gerüstet, was durch die breite Unterstützung vorhandener WebTechnologien, verteilter Objektsysteme, Datenübertragungsprotokolle und verschiedenster Datenbanken bewiesen wird. Abschließend soll noch bemerkt werden, dass WebApplikationen den Vorteil genießen, momentan einfach in Mode zu sein. Ziel der Arbeit: Motiviert durch die beschriebene gegenwärtige Situation, versucht die vorliegende Arbeit einen möglichst breiten, praxisorientierten und verständlichen Überblick des technischen 11 1 EINLEITUNG 1.1 VORAUSGEHENDE BEMERKUNGEN Umfeldes moderner web-basierender Applikationen zu geben. Der Überblick soll dabei folgende Punkte umfassen: • Analyse des Spektrums verfügbarer Server-Software. • Bewertung einiger ausgesuchter Web-Technologien. • Untersuchung zweier konzeptionell unterschiedlicher Server. • Detail-Aspekte einer realisierten Web-Applikation. Im Schwerpunkt soll in den angeführten Punkten auf praxisbezogene Problemstellungen Bezug genommen werden. Auftretende Schwierigkeiten, sowie Stärken und Schwächen der jeweils untersuchten Technologie sollen dokumentiert werden und als Grundlage für eine Bewertung dienen. Ein Resumee, der aus der Untersuchung und praktischen Arbeit gewonnenen Erkenntnisse soll zusammen mit einem Ausblick zu erwartender Entwicklungen diese Arbeit beschließen. Persönliche Faszination der Thematik: Dadurch, dass in Web-Applikation die verschiedensten Programmiersprachen, Übertragungsprotokolle, Sicherheitstechniken und Web-Technologien kooperieren, bedarf es an fundiertem Wissen der einzelnen Komponenten und an viel praktischer Erfahrung, um an der möglichen Komplexität dieser Applikationsform nicht zu scheitern. Die Herausforderung, die sich einem dabei stellt, ist der Punkt, der mich persönlich am meisten fasziniert. 1.1 Vorausgehende Bemerkungen Begriffswelt: Die deutschsprachige Begriffswelt der Telekommunikation (TK) und Informationstechnologie (IT) orientiert sich sehr stark an den äquivalenten englischen Begriffen. Aufgrund der rasanten Entwicklung im Bereich der TK und IT ist die Rechtschreibung vieler neuer Begriffe im Deutschen noch nicht geklärt. Soweit der DUDEN bereits eine genaue Rechtschreibung für ein verwendetes Wort vorsieht, wird sie in dieser Arbeit berücksichtigt. Im Zweifelsfall wird auf die englischsprachige Form des Wortes eins-zu-eins zurückgegriffen, wie etwa beim Begriff Application Server. Persönlich vertrete ich die Meinung, dass die 12 1 EINLEITUNG 1.2 KAPITELÜBERSICHT englischsprachigen Begriffe ohne langwierige Diskussion und ohne spezielle Anpassung an die deutsche Sprache übernommen werden sollten, da sie die Sache naturgemäß vom Ursprung her besser beschreiben. Pragmatischer Ansatz: Diese Arbeit versucht sehr sachbezogen an die diskutierten Themen heranzugehen und persönlich gemachte Erfahrungen aus der praktischen Umsetzung einzubringen. Die zahlreichen Listings mit Programmbeispielen sollen dabei den praxisbezogenen Zugang zur Thematik verstärken. Im Falle der theoretischen Untersuchung werden, wo es möglich war, die Dokument-Adressen zitierter Autoren und Verweise auf allgemeine Informationsquellen angegeben. Die Leser der PDF1 -Version dieser Arbeit kommen in den zusätzlichen Genuß, gewohnter Hyperlinks und eines mit PDF-Bookmarks realisierten Inhaltsverzeichnisses. Voraussetzungen: Der Kommentar zu den abgedruckten Listings behandelt immer die wesentlichen Punkte der diskutierten Problemstellung und nimmt keinen Bezug auf allgemeine Eigenschaften der eingesetzten Programmiersprache. Somit setzt diese Arbeit ein grundsätzliches Verständnis der Programmentwicklung und Kenntnisse in zahlreichen Programmiersprachen voraus. Zu den Sprachen zählen etwa Java, Perl, JavaScript und HTML. 1.2 Kapitelübersicht • Kapitel 2, Web-Applikationen: Ausgehend von den generellen Anforderungen an Web-Applikationen werden die Vor- und Nachteile dieser speziellen Applikationsform erläutert. Die breite Masse vorhandener Server-Software, die als Fundament von Web-Applikationen zu sehen ist, wird nach Server-Segmenten – Web-Server, Application Server, Information Server – getrennt, auf allgemeine Leistungsparameter und unterstützte Web-Technologien untersucht. Anschließend werden die derzeit verbreitetsten Web-Technologien im Einzelnen beschrieben. Die Bewertung vorhandener Werkzeuge zur Kooperation mit Datenbanken bildet dabei den Schwerpunkt der Diskussion. • Kapitel 3, Hyperwave Information Server : Im Eingang beschreibt dieses Kapitel 1 Portable Document Format entwickelt von Adobe Systems http://www.adobe.com. 13 1 EINLEITUNG 1.2 KAPITELÜBERSICHT den allgemeinen Funktionsumfang des Hyperwave Information Servers und seine schon beinahe historische Entstehungsgeschichte. In der Folge werden die vorhandenen Programmierschnittstellen des Servers detailliert erklärt und nach für WebApplikationen relevanten Kriterien wie Performance und praktischer Verwendbarkeit bewertet. • Kapitel 4, Apache HTTP Server : Analog zu Kapitel 2 wird eingangs der Apache HTTP Server im Überblick dem Leser vorgestellt. Aspekte der Installation und Konfiguration des Servers aus praktischer Sicht werden ebenso beschrieben, wie die Ziele des Apache Server Projekts. Die Untersuchung und Diskussion der für WebApplikationen interessanten Module des Apache Servers schließen dieses Kapitel. • Kapitel 5, CO2: Details einer Web-Applikation auf Basis des HWIS : Dieses Kapitel befasst sich mit konkreten Implementationsdetails einer im Rahmen eines IICM-Projekts entstandenen Web-Applikation auf Basis des Hyperwave Information Servers. Ausgehend von der allgemeinen Applikationsstruktur wird der technische Ablauf vom Request zur HTML-Seite im Schwerpunkt beschrieben. • Kapitel 6, Schlußfolgerungen und Ausblick: Das letzte Kapitel, versucht aus den gewonnenen Ergebnissen der theoretischen Untersuchung und der praktischen Arbeit für die Entwicklung von Web-Applikationen relevante Schlußfolgerungen zu ziehen. Mögliche zukünftige Entwicklungstendenzen von Web-Applikation bilden den Abschluss dieser Arbeit. • Anhang A, Attribute der perfekten Web-Applikation: Hersteller von Server-Software versehen gerne ihre Produkte und die darauf aufbauenden Web-Applikationen mit speziellen Attributen. Dabei treten gewisse typische Begriffe (erweiterbar, robust, etc.) recht häufig in den White Papers unterschiedlicher Hersteller auf. Dieser Anhang listet die in der Untersuchungsphase gefundenen Attribute für WebApplikationen gesammelt auf. • Anhang B, e-Manie: Ähnlich wie in Anhang A wurde im Zuge der InternetRecherche zu dieser Arbeit eine Unmenge von e“-Begriffen (zum Beispiel: e-Com” merce, e-Business, etc.) gefunden. Dieser Anhang beinhaltet eine Auflistung der gefundenen Begriffe mit teilweiser Beschreibung ihrer Bedeutung. 14 2 Web-Applikationen So we hear desperate cries for a silver bullet – something to make software costs drop as rapidly as computer hardware costs doa . Frederick P. Brooks a No Silver Bullet [Brooks, 1986]. Die Applikation betrat die Bühne des World Wide Web und der Terminus Web-Applikation war geboren. So oder ähnlich dramaturgisch könnte man es sehen. Faktum ist, dass Web-Applikationen beinahe in alle Bereiche herkömmlicher Software vorgedrungen sind und immer häufiger in Unternehmen Schlüsselpositionen einnehmen – man denke nur an den derzeit herrschenden Hype um E-Business und E-Commerce. Dem zum Trotz können keine wirklichen Aussagen gefunden werden, was eigentlich Web-Applikationen sind und welche Vor- und Nachteile sie mitbringen. Dieses Kapitel versucht in Abschnitt 2.1 diese grundlegenden Fragen auf Basis fundierter Recherche zu klären. Abschnitt 2.2 widmet sich der vorhandenen Server-Software und untersucht die verschiedenen Segmente im Detail. Abschließend werden in Abschnitt 2.3 verschiedene Web-Technologien – Bausteine jeder Web-Applikation – auf ihre Leistungsfähigkeit hinsichtlich einer Datenbank-Anbindung geprüft. 2.1 Grundlagen Nichts gestaltet sich schwieriger als die genaue Definiton des Begriffes Web-Applikation, obwohl dieser zur Zeit in aller Munde ist. Kein einzelnes Phänomen der InternetGesellschaft, in der man nichts lieber tut, als sich mit Abkürzungen zu verständigen, die 15 2 WEB-APPLIKATIONEN 2.1 GRUNDLAGEN man dabei selbst tagtäglich neu erfindet. Hätten wir nun ein Dutzend Web-Experten zur Verfügung, könnten wir sie mit der Definition des Begriffes beauftragen. Die erhaltenen Definitionen untersuchen wir dann auf Gemeinsamkeiten, um eine allgemeine Definition daraus abzuleiten. Leider haben wir diese Resourcen nicht und probieren den modernen Weg der Internet-Recherche, doch auch in den diversen Wörterbüchern [Networds, 2000; Wĕbopēdia, 2000] für Internet-Begriffe fehlt jeweils ein Eintrag für Web-Applikation“. ” Ein Leiden, das allen Newcomer-Begriffen“ des Internets gemein ist. ” Der einfachere und einzig zielführende Weg ist die wörtliche Übersetzung aus dem Englischen. Eine Web-Applikation ist demnach nichts anderes als eine auf das Internet – im engeren Sinne auf das World Wide Web – basierende1 Anwendungs-Software. Damit ist eigentlich das Wesentliche gesagt. Welche konkreten Web-Technologien nun die Web-Applikation in ihrer Implementation verwendet, ist aus diesem Blickwinkel völlig belanglos. Dennoch wollen wir um das allgemeine Verständnis zu erhöhen, den Versuch unternehmen, Web-Applikationen anhand von typischen Merkmalen näher zu charakterisieren. In Abschnitt 2.1.1 werden wir diese Merkmale als Anforderungen bezeichnen. Aus diesen Anforderungen lassen sich ganz spezifische Vor- und Nachteile einer Web-Applikation ableiten, die in den Abschnitten 2.1.2 und 2.1.3 Erwähnung finden. Abschließend werden in Abschnitt 2.1.4 die derzeit wichtigsten Anwendungsbeispiele für Web-Applikationen angeführt. 2.1.1 Anforderungen Welche Eigenschaften machen eine herkömmliche Applikation zur Web-Applikation? Die Beantwortung dieser Frage erweist sich nach genauerer Überlegung als nicht ganz trivial, da einige Eigenschaften auch einer gewöhnlichen Applikation zugesprochen werden können. Aus diesem Grund versuchen wir die Antwort mit einem pragmatischerem Ansatz zu bekommen. Das geschieht durch Festlegung der Anforderungen einer Web-Applikation rein vom allgemein technischen Standpunkt gesehen, also ohne spezielle Vorgaben an die Funktionalität. Die dabei gefundenen Anforderungen bilden die Basis jeder WebApplikation und sind demnach implizit typische Eigenschaften dafür. Anforderungen (Requirements) an Software – eine Web-Applikation ist zweifellos ein Stück Software – werden immer in zwingende und optionale Anforderungen gegliedert. Zwingende Anfor1 Im Englischen ist Web Application eine Kurzform für Web-based Application, beides meint dasselbe. 16 2 WEB-APPLIKATIONEN 2.1 GRUNDLAGEN derungen müssen in jedem Fall von einer Applikation erfüllt werden, um als Web-Applikation zu gelten. Die aufgelisteten optionalen Anforderungen werden in Summe von den meisten Web-Applikationen zusätzlich erfüllt, sind aber nicht verbindlich. Zwingende Anforderungen: • Das Web, Kurzform von World Wide Web 2 dient als primäre Plattform der WebApplikation. • Eine Web-Applikation ist im Inter- oder Intranet situiert. • Der Web-Browser dient als alleiniges User-Interface. • Eine Web-Applikation erzeugt Web-Seiten, die von einem Web-Broswer dargestellt werden. • Abhängig von Benutzereingaben oder überhaupt generell werden die Web-Seiten dynamisch erzeugt. • Die Sprache der Web-Seiten ist HTML3 oder XML4 . • Eine Web-Applikation besitzt immer eine interaktive Komponente, die durch Formulare oder Applets5 erreicht wird. • Die Web-Applikation überprüft die Eingaben des Users auf Korrektheit und verarbeitet sie. Zum Beispiel können Daten in einer Datenbank gespeichert werden. • Die eigentliche Web-Applikation nutzt die Programmiermöglichkeiten eines WebServers oder Application Servers und wird auch von diesen beherbergt. Optionale Anforderungen: • Session-Management wird von der Web-Applikation realisiert. • Die Web-Applikation interagiert mit einer Datenbank. 2 Das WWW ist der auf dem Hypertext Transfer Protocol (HTTP) basierende Teil des Internet. HyperText Markup Language, siehe [W3C, 1999]. 4 eXtensible Markup Language, siehe http://www.w3.org/XML. 5 Ein kleines Programm, dass innerhalb einer anderen Applikation ausgeführt wird, zum Beispiel ein Java-Applet innerhalb eines Web-Browsers. 3 17 2 WEB-APPLIKATIONEN 2.1 GRUNDLAGEN • Ein Sicherheitskonzept (Identifizierungsmechanismus, sichere Verbindungen) wird von der Web-Applikation implementiert. • Für die Web-Seiten Erstellung werden Templates verwendet, dessen Platzhalter individuell gefüllt werden. • Web-Applikationen arbeiten häufig mit Mail-Systemen zusammen. • Die Web-Applikation fügt sich in vorhandene Infrastruktur6 ein. • Web-Applikationen können Workflows anstossen. Die Liste der optionalen Anforderungen kann fast beliebig erweitert werden, sieht man etwa nur auf die Vielzahl vorhandener offener und proprietärer Web-Technologien (Abschnitt 2.3 behandelt einige ausgewählte Beispiele). Auch der Katalog der zwingenden Anforderungen kann nicht als vollständig angesehen werden, soll aber verdeutlichen, dass manche Leute gar nicht wissen, welche typische Eigenschaften Web-Applikationen eigentlich ausmachen. 2.1.2 Vorteile Aus den Anforderungen des letzten Abschnittes lassen sich zahlreiche Vorteile von WebApplikationen gegenüber herkömmlichen Client-Server-Applikationen ableiten. Gerade diese Vorteile motivieren derzeit Unternehmen, auch ihre internen Applikationen zunehmend auf Web-Basis zu stellen, um à la longue vom verminderten Wartungsaufwand und damit geringeren Kosten zu profitieren. Konkret zu den Vorteilen: 1. Web-Applikationen sind plattform-unabhängig. Das Vorhandensein eines WebBrowsers ist die einzige Voraussetzung auf der Client-Seite. 2. Die Web-Applikation läuft zentral auf einem oder mehreren Servern. Upgrades finden rein hier statt, der Client bleibt dabei unbetroffen. Es entfällt das mühselige Upgrade oft unzähliger Clients. 3. Die Web-Applikation übernimmt die ganze Applikations-Logik. Der Client kümmert sich rein um die Darstellung und findet daher auch mit weniger performanter Hardware das Auslangen (Thin-Client). 6 File-Server, Web-Server, Verzeichnis-Dienste oder Datenbanken. 18 2 WEB-APPLIKATIONEN 2.1 GRUNDLAGEN 4. Bei entsprechenden Authorisierungs-Mechanismen und sicheren Verbindungen (Verschlüsselung der Daten-Pakete) kann die Web-Applikation weltweit eingesetzt werden. 5. Die vertraute Web-Browser-Oberfläche erleichtert dem Anwender das Erlernen der Benutzerführung. 6. Die für Web-Applikationen benötigten Server-Produkte werden zunehmend leistungsfähiger und ausgereifter. 7. Web-Applikationen verwenden oft globale und weitverbreitete Internet-Standards, die den meisten Entwicklern bereits vertraut sind. Damit verkürzt sich in vielen Fällen die Entwicklungszeit. 8. Bei gezieltem und durchdachtem Einsatz ergeben sich in Summe geringere Kosten. 2.1.3 Nachteile Kein Vorteil ohne Nachteil. Diese alte Weisheit bewahrheitet sich auch nach der Betrachtung der Vorteile von Web-Applikationen: 1. Web-Applikationen brauchen akzeptable Antwortzeiten (Response Times). Da jeder Page View“ dynamisch erzeugt wird und beim Aufbau der Seite oft Daten ” von anderen Systemen benötigt werden, kann das zu vehementen Verzögerungen führen. Bei 10 Sekunden liegt die Obergrenze, um die Aufmerksamkeit des Users nicht zu verlieren [Nielsen, 2000a]. Die Architektur der Web-Applikation ist dabei häufig entscheidender, als die Performance des Servers. Die Antwortzeit ist das wichtigste Kriterium der Web-Applikation! 2. Web-Applikationen sind kein Allheilmittel“. Nicht jeder Anwendungsbereich ist ” für Web-Applikationen geeignet. 3. Die im Internet verwendeten Standards sind teilweise noch extrem kurzlebig. Es ist eine sprichwörtliche Gradwanderung, einerseits web-technologisch am Laufenden ” zu bleiben“ und andererseits nicht Zeit und Geld mit unausgereiften Technologien zu vergeuden. 4. Bei nachlässiger Programmierung können gravierende Sicherheitslöcher entstehen, die potentielle Ziele für Angreifer sind. 19 2 WEB-APPLIKATIONEN 2.1.4 2.2 SERVER SOFTWARE Anwendungsbereiche Die unten angeführte Liste gibt die derzeit bekanntesten Anwendungsbereiche von WebApplikationen wieder. Die dabei verwendeten Begriffe assoziieren häufig sehr große Systeme, die zum Teil mit herkömmlichen Client-Server-Applikationen bereits realisiert wurden, wie Help Systems“, und zum Teil nur als Web-Applikation überhaupt realiser” bar sind, wie E-Commerce“ Systeme. Da sich diese Begriffe ausschließlich im englisch” sprachigem Raum entwickelt haben, sind sie hier auch nur im Englischen angeführt: • Document Management • Frontend for Corporate Databases • Knowledge Management • Managing Inventory • Business and News Portals • Web-based Training • E-Commerce, E-Business • Help Systems • Customer Support Systems • Supply Chain Management • Large Web Sites • Groupware 2.2 Server Software Nach den in Abschnitt 2.1.1 definierten Anforderungen an eine Web-Applikation, wird für deren Realisierung eine entsprechende Plattform benötigt, die naturgemäß von einem Server7 zur Verfügung gestellt wird. Plattform bedeutet in diesem Fall ein passendes API8 oder dazu alternative Programmierschnittstellen des Servers. Diese Schnittstellen werden in Abschnitt 2.3 als Web-Technologien bezeichnet und dort genauer untersucht. Das stetig reicher werdende Angebot an erhältlicher Server-Software, verkompliziert die Auswahl eines für die Web-Applikation am geeignetsten Servers noch zusätzlich. Die primäre Entscheidungsgrundlage bildet der Anforderungs-Katalog an die Web-Applikation. Dieser enthält indirekt sehr viele Punkte, die vorrangig die Funktionalität des Servers betreffen, wie zum Beispiel Sicherheit oder Last-Verteilung. Dennoch kann man 7 8 Hier ist die Server-Applikation im informatischen Sinn gemeint, nicht ein Rechner. Application Program Interface 20 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE auch konkrete Anforderungen an den Server selbst stellen, dabei können die folgenden Punkte ausgemacht werden: • Web-Basisfunktionalität • Erweiterbarkeit/Skalierbarkeit 1. HTTP 1.0/1.19 • Performance (Throughput, Response Times) 2. Konfigurationsmöglichkeit • Programmier-Schnittstellen, • Sicherheit/Zuverlässigkeit siehe dazu die in Abschnitt 2.3 ange• Management Tools gebenen Technologien. • Entwicklungsumgebung • Dokumentation • Modularität • Kosten Im Punkt Web-Basisfunktionalität wird festgelegt, dass ab diesem Zeitpunkt jeder Ser” ver“ in dieser Arbeit indirekt ein HTTP-Server ist. Immer wichtiger werden auch Erweiter- und Skalierbarkeit als Anforderung in der heutigen Zeit, da sich vorhandene Auslastungs-Muster“ über Nacht sprunghaft – und leider unvorhersehbar – ändern ” können [Baum, 1999]. Um das Design oder die Architektur einer Web-Applikation skalierbar zu machen, muss vor allem der Server skalierbar sein und die entsprechenden Mechanismen dafür bereitstellen. Zu den von der Software zu erfüllenden technischen Anforderungen, kommen auch wirtschaftliche Belange, nämlich die Kosten, die ein bestimmtes Budget nicht überschreiten sollten. Das kann bei gewissen Enterprise-Servern, zum Beispiel einem iPlanet (Netscape) Application Server mit 35.000$, eine durchaus strategische Entscheidung werden, die eher von der Management- als der Technischen-Ebene getroffen wird. Um in die Server-Landschaft“ etwas mehr Ordnung zu bringen, versuchen Hersteller ” ihre Server einer gewissen Kategorie zuzuordnen, mit der man gleichzeitig eine bestimmte Funktionalität verbinden soll. Der Nachteil liegt dabei in der verschiedenen Interpretation, bzw. Definition dieser vergebenen Labels und führt manchmal zu echter Verwirrung. Die am häufigsten zu findenden Prädikate sind: 1. Web-Server 9 HyperText Markup Language [Berners-Lee et al., 1996; Fielding et al., 1999] 21 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE 2. Application Server 3. Information Server In den Abschnitten 2.2.2–2.2.4 wird versucht, diese Kategorien anhand ihrer typischen Funktionalität im Einzelnen zu spezifizieren und dabei untereinander – sofern überhaupt möglich – Grenzen zu ziehen. Unterscheidungskriterien sind primär implementierte Technologien und Standards der jeweiligen Server-Segmente. Das Hauptaugenmerk liegt dabei im allgemeinen Überblick der vorhandenen Produkte und im Speziellen in der Leistungsfähigkeit dieser, in Hinblick auf darauf aufbauende Web-Applikationen. Abschnitt 2.2.1 geht ganz allgemein den Fragen nach: Wieviele Server gibt es derzeit überhaupt im World Wide Web? Welche Server-Software wird von diesen benutzt? Und was kann man aus diesen Betrachtungen schließen? 2.2.1 Server Überblick Die wohl bekannteste Adresse im WWW, die Server Statistiken betreibt, ist Net” craft.com“ (http://www.netcraft.co.uk). Netcraft erstellt seit fast 5 Jahren eine monatlich aktualisierte Web Server Survey und gibt dadurch Aufschluß über den Verwendungsgrad bestimmter Server Software (siehe dazu Abbildung 2.1). Netcraft verwendet zum Auffinden der Server ein Discovery Script, dass die gefundenen Server entsprechend ihrer Server-Signature10 identifiziert. Die so gesammelten Server-Informationen werden von Netcraft in einer Datenbank verwaltet. Zur Zeit sind es über 13 Millionen Web Sites – Anzahl stark steigend – die als Grundlage für die Statistiken von Netcraft herangezogen werden. Tabelle 2.1 zeigt die Top 5“ und zusätzlich die Plazierung des ” Hyperwave Information Servers. Deutlich ist die Dominanz des Apache Web Servers, der mehr als die Hälfte des Marktes beherrscht, gefolgt vom Microsoft Internet Information Server mit knapp einem Viertel Anteil und dem schon eher abgeschlagenen iPlanet Enterprise Server (früher Netscape) mit ,nur mehr‘ 6.94 Prozent. Der Hyperwave Information Server rangiert in der eigentlichen Tabelle – siehe [Netcraft, 2000] – im oberen Drittel, ist aber mit 719 gezählten Sites innerhalb dieses Vergleichs unter ferner liefen. 10 Server response-header field der HTTP-Message, z.B: Server: Apache/1.3.4 (Unix) SuSE/6.0 22 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE Abbildung 2.1: Marktanteile der Top 5 Server über alle Domänen. Betrachtet in einem Zeitraum von August 1995 bis März 2000. Quelle: [Netcraft, 2000]. Tabelle 2.1: Netcraft Server Statistik vom März 2000 mit Platzierungen einzelner Server, Anzahl der Web Sites und dem Prozentanteil des Marktes. Rang 1 2 3 4 5 .. 75 Server Name Apache Microsoft IIS iPlanet (Netscape) Enterprise Zeus Rapidsite .. Hyperwave Information Server 23 Anzahl der Sites 7.870.864 2.739.901 909.645 245.255 234.985 .. 719 Prozentanteil 60.05% 20.91% 6.94% 1.87% 1.79% .. 0.01% 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE Vorsichtige Interpretation Der Netcraft ,Web Server Überblick‘ ist mit einiger Vorsicht zu genießen. Die erfassten Server wie Apache, Apache-1.3.4, mod_perl, ApacheSSL gehören zur gleichen Familie, scheinen aber getrennt auf. Das Modul mod_perl des Apache ist ohnehin kein eigenständiger Web Server, es kann nur bei der Übersetzung der Apache-Distribution als Modul installiert, oder als DSO11 dynamisch gelinkt werden. Über die Hälfte der erfassten Server – es sind über 600 – hat weniger als 100 gezählte Web Sites vorzuweisen. Alle Server unter der Kategorie Web-Server zu sehen verzerrt die Ergebnisse zusätzlich, zwar nicht im ersten Viertel der Statistik, aber sicher dannach. Daher ist auch die Plazierung des HWIS sehr relativiert zu betrachten. Der Netcraft ,Web Server Survey‘ ist vorrangig geeignet, einen schnellen qualitativen Eindruck der derzeit herrschenden Marktverhältnisse zu bekommen. Für die genauere Analyse oder gar als Entscheidungshilfe für die Anschaffung eines Servers, ist er sicher weniger geeignet. 2.2.2 Web-Server Selbst ein Internet-Service wie Netcraft, das seit dem Jahr 1995 das Wachstum der Web-Server im Internet verfolgt, kann nicht klar definieren, welche Funktionalität ein Web-Server zumindest haben muss und wo die Grenze zu einem Application Server liegt. Daher wird hier versucht, ausgehend von den Leistungsprofilen der gesichteten Produkte, die wichtigsten Merkmale eines Web-Servers in einer Defintion zusammen zu fassen: Definition: Ein Web-Server erlaubt mittels der Hypertext Markup Language (HTML) im Internet Inhalte bereit zu stellen. Dazu nimmt der Web-Server Anfragen (Requests) von Web Browsern entgegen und liefert ein entsprechendes Dokument. Dokumente sind eindeutig über einen Uniform Resource Locator (URL12 ) im Internet bestimmt. Web-Server und Web-Browser kommunizieren mittels Hypertext Transfer Protocol (HTTP). Server-seitige Technologien können die Leistungsfähigkeit des Web-Servers steigern. Zu diesen Technologien zählen CGI, Server-Side Includes oder proprietäre Techniken wie Active Server 11 12 Dynamic Shared Object, siehe [Engelschall, 1998] URL ist als Request For Comments definiert. [Berners-Lee et al., 1994, RFC 1738] 24 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE Pages (ASP). Vergleiche [Wĕbopēdia, 2000]. Sieht man von den angeführten server-seitigen Technologien völlig ab, würde das der Anforderung Web-Basisfunktionalität“ – siehe Abschnitt 2.2 auf Seite 20 – eines Web” Servers entsprechen. Ein derartig spartanischer Server wäre als Plattform für WebApplikationen natürlich ungeeignet. In der Praxis bieten aber alle Web-Server sogar mehrere Möglichkeiten, Web-Applikationen zu realisieren, indem sie verschiedene WebTechnologien und Standards, wie CGI oder ASP, implementieren. Das online Informations-Service internet.com [Icom, 2000] führt in einer sogenannten ServerWatch“ Listen von verschiedenen Server-Typen. Von Web-Server bis ” Proxy-Server können hier Rubriken gefunden werden. Nach Auskunft der ServerWatch“ ” werden alle Server-Rubriken manuell verwaltet und die Aufnahme eines neuen ServerProduktes erfolgt nach eigenem aber unabhängigem Ermessen. Die Liste der verzeichneten Web-Server der ServerWatch“ beschränkt sich auf 32 ” Einträge, sichtlich eine deutliche Reduktion zu den über 600, die im Netcraft Survey“ ” unter Web Server zu finden sind. In Tabelle 2.2 sind diese mit Name, URL und einigen zusätzlichen Anmerkungen alphabetisch aufgelistet. Diese 32 sind zur Zeit die sicher wichtigsten und meist eingesetzten Server am Markt. Bei der näheren Untersuchung der Server bezüglich der gebotenen Leistung, Funktionalität und zusätzlicher Features fallen folgende Punkte auf: 1. Freeware, GPL13 Viele Server sind kostenlos, laufen unter einer freien Lizenz wie der GPL oder sind Open Source“ (siehe http://www.opensource.org für weitere Informatio” nen). Bei einigen ist es eine grundsätzliche Anforderung ans eigene Produkt (siehe Apache, Jigsaw), bei anderen eher ein ,Köder‘, um andere meistens sehr benötigte Tools, wie Such-Möglichkeit oder Administrations-Werkzeuge, für den Server schmackhaft zu machen (siehe Roxen Challenger, Nr.20 in Tabelle 2.2). Es gibt auch abgespeckte Versionen von feature-reichen kommerziellen Versionen, die nur für den privaten Gebrauch bestimmt sind (siehe Microsoft Private Web Server). 2. Klein und Groß Die Microsoft Server sind zusammen mit Lotus Domino die Spitzenreiter in der Download-Größe. Im Allgemeinen sind die für Unix bestimmten Server um einiges 13 General Public License, siehe [GPL, 1999] 25 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Legende: U .. Unix L .. Linux M .. MacOS OS2 .. OS/2 W .. Windows 95/98/NT NT .. Windows NT Java .. Java Platformen NetWare .. Netware 26 W U,L U, W Java W,U,OS2 NetWare NT,M W,U Java Java NT NT W NT U,NT U,NT U,NT W U U,W W U U,W,M W Java W NT W M U, W W U 4.1 MB 3.3 MB 2.9 MB 941 kB 11.6 MB 42.7 MB 3.7 MB 338 kB 583 kB 3.9 MB 74.6 MB 74.6 MB 74.6 mB 80 MB 1 MB 70 MB 18.7 MB 1.4 MB 3.5 MB 3.3 MB 6 MB 369 kB 2.1 MB 294 kB 4.1 MB 15.1 MB 779 kB 703 kB 3 MB ✌ ✌ ✌ 150$ 1295$ 395$ ✌ 50$ ✌ 97$ 99$ ✌ 1239$ ✌ 1295$ 295$ ✌ ✌ ✌ 995$ ✌ ✌ ✌ 99$ 799$ 249$ 599$ ✌ 70$ 1699$ ✌ .. Freeware ✝ .. Keine Weiterentwicklung ✿ .. In Java implementiert ➳ .. Baut auf Apache auf. ✔ ✔ ✔ ✔ Anmerkung Java Servlets SSL Preis Adresse www.csm.co.at/alibaba/index.htm www.aolserver.com/server www.apache.org www.avenida.co.uk/products/aws www-4.ibm.com/software/webservers/dgw www.novell.com/products/netscape_servers www.softarc.com www.goahead.com/webserver/webserver.htm www.servertec.com/products/iws/iws.html www.w3.org/Jigsaw www.notes.net/r5 www.microsoft.com/ntserver/web www.microsoft.com/ntserver/web www.microsoft.com/siteserver hoohoo.ncsa.uiuc.edu www.iplanet.com/products www.iplanet.com/products www.omnicron.ab.ca/httpd www.rapidsite.com www.roxen.com/products/challenger www.sambar.com www.c2.net/products/sh2 www.scriptics.com/products/tclhttpd www.urllive.com www.vqsoft.com/vq/server www.luckman.com website.oreilly.com website.oreilly.com www.starnine.com/webstar/webstar.html www.imatix.com/html/xitami www.zbserver.com www.zeus.co.uk Download Größe Web-Server Alibaba AOLserver Apache Avenida Domino Go Webserver Enterprise for Netware First Class GoAhead iServer Jigsaw Lotus Domino Microsoft IIS Microsoft PWS Microsoft Site Server NCSA HTTPd Netscape Enterprise Netscape FastTrack OmniHTTPd Pro RapidSite Roxen Challenger Sambar Server Stronghold Tcl Web Server URL Live! vqServer Web Commander Website Pro WebSite Standard WebSTAR Xitami ZBServer Zeus Web Server BS Nummer Tabelle 2.2: Web-Server der ServerWatch“ [Icom, 2000] mit Name, Adresse, unterstütztem ” Betriebssystem, Download Größe, Preis, SSL, Java Servlets und zusätzlichen Anmerkungen zum Entwicklungsstatus. ✝ ✔ ✔ ✿ ✝ ✔ ✔ ✿ ✔ ✔ ✔ ✝ ✔ ✔ ✔ ✔ ✔ ➳ ✔ ✔ ➳ ✔ ✿ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE Platz sparender als die für Windows, da diese nicht bereits vorhandene StandardDienste wie ftp oder sendmail implementieren müssen. Viele Windows-Server sind mit diesen zusätzlichen Diensten ausgestattet. 3. SSL14 Wird bereits von der Mehrzahl – in Tabelle 2.2 sind es die Hälfte – der Server standardmäßig angeboten und stellt zur Zeit den Status quo im Bereich sichere Kommunikation via Internet (HTTP, LDAP15 , IMAP16 ) dar. 4. Unix vor Windows Unix ist noch immer das vorrangige Betriebssystem für Web-Server, dennoch bieten immer mehr Hersteller Versionen auch für Windows 9x, aber zumindest Windows NT an. 5. Java Servlets In Tabelle 2.2 sind es 11 von 32 Servern die Java Servlets unterstützen. Java Servlets sind eine immer populärer werdende Alternative zu CGI-Programmen auf der Server-Seite. 6. In Java Avenida, Jigsaw, und vqServer sind in Java implementiert. Sie haben damit den Vorteil, automatisch auf sehr vielen Plattformen verfügbar zu sein. Zudem brauchen sie keine zusätzliche Servlet-Engine, um Java Servlets ausführen zu können, sie verwenden dazu die vorhandene Virtual Machine. 7. Apache basierend RapidSite und Stronghold erweitern die Grundfunktionalität des Apache WebServer mit zusätzlichen Features und bieten damit ein für bestimmte Zwecke vorgefertigtes Server-Paket kommerziel an. Stronghold ist die Nummer eins im Bereich der kommerziellen SSL-Server für Unix-Platformen. Abschließend läßt sich feststellen, dass alle Web-Server der ServerWatch“ die an ” die Server-Software gestellten Anforderungen – zwar in unterschiedlicher Weise, aber doch – erfüllen. Bei der Untersuchung zeigte sich auch, dass manche Produkte aufgrund 14 Secure Socket Layer, siehe [Alan O. Freier et al., 1996; SSL-Intro, 1998; Crypto, 1998]. Lightweight Directory Access Protocol 16 Internet Message Access Protocol 15 27 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE der ständigen Inkorporation neuer Technologien, einfach überladen“ sind und dadurch ” schwerfällig werden im Handling und der Wartung. Die Geschwindigkeit, in der neue Standards von Herstellern implementiert werden, bestimmt aber nachhaltig die Konkurrenzfähhigkeit ihres Produkts. Das geht jedoch – wie gesehen – vermehrt auf Kosten des Kunden und der Qualität. Eine Vielfalt von implementierten Web-Technologien erlaubt natürlich die Selektion der für die Anforderungen der Applikation am geeignetsten. Diese Auswahl-Möglichkeit sollte aber keinesfalls auf Kosten der Performance gehen, überhaupt wenn sich die sogennanten Usage Patterns über Nacht schlagartig ändern können17 . 2.2.3 Application Server Gautam Desal in [Desal et al., 1999]: Application servers are the infrastructure component in vogue this season.“ ” Application Server sind nicht nur en vogue“, sondern in der Zwischenzeit sehr gewachsen ” und gereift. Das liegt an der Tatsache, dass viele Unternehmungen in einem Application Server das effektivste Werkzeug sehen, in kurzer Zeit Web-Applikationen zu realisieren, die sich leicht in bestehende – oft heterogene – Systeme wie Kunden-Datenbanken, Geschäfts-Applikationen oder sogenannte Legacy Applications18 integrieren lassen. Gerade in diese Richtung zielt auch das Werbekonzept der Hersteller, das mit dem Kauf eines Application Servers die beinahe fertige Web-Applikation verspricht, was natürlich nur ansatzweise stimmt. Der Markt wächst trotzdem rapide und bereits alle größeren Software-Produzenten können mit entsprechenden Produkten aufwarten. In Abschnitt 2.2.2 hat sich bereits die Definition eines Web-Servers als nicht sehr leicht erwiesen, hingegen wirkliche Schwierigkeiten stellt die Aufgabe, einen Application Server zu definieren. Eine Ursache liegt darin, dass Application Server meist auf der Basis von vorhandenen Produkten eines Software-Hauses aufbauen und damit schon mit bestimmten Grund-Features ausgestattet sind, für die das Haus bekannt ist. In dem Artikel What is an Application Server“ [Wright, 1999] unterteilt Guy Wright Application ” Server nach ihrer Abstammung“ in 3 Kategorien: ” 17 18 Heute 100, Morgen 1000 zugreifende Benutzer Das sind bestehende Applikationen eines Unternehmens, die sehr viel Zeit und Geld gekostet haben. 28 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE 1. Web-Server mit zusätzlicher Funktionalität 2. Datenbank-Server mit zusätzlicher Web-Funktionalität 3. Völlig neues Produkt Weitere Ursachen für diese Begriffs-Verwirrung“ beschreibt Mike Ricciuti in seinem ” Artikel Application Server eludes Definition“ [Ricciuti, 1998]. Die Sichtung der White ” Papers verschiedener Application Server ergibt dennoch eine große Menge an immer wieder vorkommenden Features, die man als Kern-Merkmale von Application Servern bezeichnen kann. Die nachstehende Definition fasst diese zusammen. Definition: Ein Application Server ist Software, die in der sogenannten Mittelschicht (engl. middle tier ) läuft, zwischen Web-Browser basierenden Thin Clients 19 und ,back-end‘ Datenbanken oder anderen Applikationen. Der Application Server behandelt die gesamte Applikations-Logik, die für das Verhalten eines bestimmten Systems zuständig ist. Er stellt Java- oder Browser-basierende Anwendungen dem Benutzer zur Verfügung, deren Implementierung über eine integrierte Web-Entwicklungs-Umgebung erleichtert wird. Zusätzlich kann ein Application Server in großen Systemen als Traffic Cop fungieren und die auftretende Last entsprechend verteilen. Quelle: [Wĕbopēdia, 2000; Ricciuti, 1998]. Mit dem Einfügen eines Application Server in ein vorhandenes Client/Server-System, Abbildung 2.2: 3-tier Architecture. Quelle: [Netscape, 2000]. 19 Ein Computer der keine Applikation installiert haben muss, da er sie über den Web-Browser optional laden kann. Siehe [Wĕbopēdia, 2000]. 29 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE wird aus der 2-schichtigen Architektur (2-tier Architecture) eine 3-schichtige (3-tier Architecture). Da wie in Abbildung 2.2 dargestellt der Application Server sich genau zwischen Client und Server einordnet, spricht man von Middleware. Diese Architektur begünstigt auch die Aufspaltung der Applikation in 3 Teile, nämlich in: 1. Presentation Logic (Präsentations-Logik): HTML, XML, JavaScript. 2. Application Logic (Applikations-Logik): Java, C/C++, Enterprise JavaBeans (EJB), Servlets, JavaServer Pages. 3. Data Logic (Daten-Logik): SQL, EJB. Diese Teilung erweist sich besonders bei der Entwicklung von large-scale Applications 20 als sehr vorteilhaft und wird zum Beispiel von Oracle [Oracle, 1999] in der Praxis verfolgt. Die bereits oben zitierte ServerWatch“ [Icom, 2000] rezensiert auch die wichtigsten ” Application Server in einer eigenen Rubrik. Tabelle 2.3 listet diese mit Namen, URL und interessanten Anmerkungen alphabetisch auf. Zope wurde als Beispiel eines OpenSource Application Servers noch zusätzlich in der Tabelle ergänzt. Aus dem Studium einiger White Papers und der Leistungsprofile der aufgelisteten Application Server können folgende Punkte festgehalten werden: 1. Größe Die gepackten Demo-Versionen sind im Schnitt bereits an die 50 MB groß. Spitzenreiter ist Oracle mit 181 MB, Schlußlicht ist Galileo mit 229 kB. Die Größe korreliert dabei zunehmend mit der Komplexität der Software. 2. Plattformen Alle Server sind für Windows NT und Solaris erhältlich. Versionen für HP-UX, AIX, MAC OS, Irix und Linux sind je nach Hersteller verfügbar. 3. Web-Server Apache, MS Internet Information Server und Netscape sind die gängisten unterstützten Server. Die Kommunikation zwischen Web-Server und Application Server kann auch bei vielen Produkten über CGI stattfinden. Einige Server wie Galileo oder Zope übernehmen selbst die Aufgabe eines Web-Servers. 20 Anwendungen für den Bereich Midrange bis Superenterprise, siehe [Krause & Hecht, 2000]. 30 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE 1 2 3 4 5 6 8 9 10 11 12 13 14 15 16 Legende: Adresse http://www.bluestone.com/products/sapphire http://www1.allaire.com/products/coldfusion http://www.delanotech.com/products http://www.esemplare.com/galileo.html http://www.haht.co.uk http://www.intertop.com/isuite/iserver.html http://www.netdynamics.com http://www.iplanet.com/products http://www.oracle.com http://www.silverstream.com http://www.sybase.com/products/easerver http://www.vision-soft.com http://www.apple.com/webobjects http://www-4.ibm.com/software/webservers http://www.zope.org U .. Unix W .. Windows 95/98/NT NT .. Windows NT W,U W,U NT NT,U NT,U NT,U NT,U NT, U NT, U NT, U NT,U NT,U NT,U NT,U NT,U Preis 25.000$ 3.495$ 50.000$ ✌ 7.500$ 3.995$ 25.000$ 35.000$ 648$ 8.500$ 1.995$ 25.00$ 7.500$ 6.000$ ✌ Anm. Application Server Bluestone Sapphire/Web ColdFusion Delano e-Business Suite Galileo HAHTSite Intertop NetDynamics SUN Netscape Appl. Server Oracle Appl. Server SilverStream Sybase Appl. Server Visiom B. Server WebObjects Apple WebSphere IBM Zope BS Nr. Tabelle 2.3: Application Server der ServerWatch“ [Icom, 2000] mit Name, Adresse, unterstütz” tem Betriebssystem, Preis und zusätzlichen Anmerkungen. ✿ ✿ ✿ ✌ .. Freeware ✿ .. In Java implementiert 4. Summe von Komponenten Das Produkt Application Server besteht in fast allen Fällen aus einem Bündel verschiedener Server und Tools, typischerweise aus Application Builder, Application Server und Application Administration Tool. Das Admin-Tool ist zumeist via WebBrowser zugänglich. 5. Wizards, IDE21 Die Entwicklung von Applikationen soll durch Wizards und visuelle Werkzeuge innerhalb der integrierten Entwicklungs-Umgebung beschleunigt werden. Im Speziellen wird das visuelle Applikations-Design von vielen Herstellern forciert. 6. Java, C/C++ Der Slogan write once, run anywhere“ hat Java zur Sprache des Network Compu” ting gemacht [OAS, 1998]. Sämtliche Server unterstützen Java, fast alle C/C++. Perl und Cobol sind nur ganz vereinzelt vertreten. 7. DB Unterstützung 21 Integrated Development Environment 31 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE Der Zugriff auf Datenbanken kann primär über ODBC22 oder JDBC23 erfolgen. Informix, Oracle, DB2, SQL Server werden weniger aber dann direkt unterstützt. 8. CORBA24 Die Mehrzahl der Server – 10 von 16 – erlaubt die Erzeugung von CORBA Objekten und verfügt meistens über eigene Object Request Broker (ORB), die sich untereinander über Internet Inter-ORB Protocol (IIOP) verständigen. 9. COM/DCOM25 Für verteilte Objekte auf Windows Ebene unterstützen 7 der 16 Server DCOM von Microsoft. DCOM konkurriert mit CORBA, bei ungefähr gleicher Funktionalität. 10. EJB Enterprise JavaBeans wurden im Vergleich zu CORBA sehr schnell von den Herstellern als Standard akzeptiert. Ungefähr die Hälfte der Server unterstützt bereits diese Technologie. 11. Failover Fast alle Server bieten Failover-Strategien auf Server-Level. Je nach Produkt – aber eher vereinzelt – gibt es Failover auf Application-Level oder sogar auf Session-Level. 12. Clustering, Load-Balancing Voraussetzung für Failover-Mechanismen ist die Möglichkeit einen anderen gleich” wertigen“ Server bei Bedarf zu verwenden. Dazu werden sogenannte Server Cluster eingesetzt, die auch das Aufteilen der auftretenden Last erlauben. Load-Balancing kann entweder rule-based oder event-based stattfinden. 13. Hoher Preis Application Server sind High-End-Software und die hat ihren Preis. Nach oben hin ist es schwer, eine Grenze zu ziehen, da der Preis von der Anzahl der concurrent User abhängig sein kann. Dem stehen nur Galileo und Zope als freie Server gegenüber, die aber auch mit weniger Funktionalität ausgestattet sind. 22 Open DataBase Connectivity, eine von Microsoft entwickelte DB-Zugriffsmethode. Java DataBase Connectivity, ein von JavaSoft/SUN entwickeltes Java API zum DB-Zugriff. 24 Common Object Request Broker Architecture, siehe [Schmaranz, 2000, Kap. 7]. 25 Das Distributed Component Object Model ist eine Erweiterung des Component Object Model und ein von Microsoft entwickelter Standard für verteilte Objekte. 23 32 2 WEB-APPLIKATIONEN 2.2 SERVER SOFTWARE Aus dieser Fülle aufgezählter Punkte könnte man glauben, in einem Application Serverwirklich das lang gesuchte Silver Bullet für den Werewolf Web-Applikation gefunden zu haben, leiht man sich die berühmte Metapher von Frederick Brooks [Brooks, 1986]. Dem ist leider nicht so. Natürlich versucht man mittels visueller Tools die Entwicklung so leicht wie möglich zu gestalten, aber den Aufwand eines durchdachten ApplikationsDesigns und den gewissen – meist größeren – Teil dazu notwendiger Low-Level Programmierung, können sie einem nicht abnehmen. Bei der Auswahl des richtigen Servers26 ist zuerst immer den Anforderungen der Web-Applikation Rechnung zu tragen. Das heißt man sucht die Antworten zu den beiden folgenden Fragen: 1. Welche Anforderungen muß und soll die Web-Applikation erfüllen? 2. Welcher Server kann die Erfüllung dieser Anforderungen am ehesten unterstützen? Bezieht man noch Aspekte wie Skalierbarkeit, Erweiterbarkeit, Sicherheit und Wartbarkeit in den Entscheidungsprozess mit ein, hat man von rein technischer Seite gesehen, kaum eine Chance ein falsches Produkt als Plattform für die Web-Applikation zu wählen. 2.2.4 Information Server Als letztes in Abschnitt 2.2 erwähntes Server-Segment, bleibt der Information Server. Wie sich aus der Untersuchung der letzten beiden Kategorien herausstellt, ist das Label Information Server“, einerseits sehr selten an Server vergeben und andererseits auch ” noch nicht als eigenständige Kategorie – wie Web-Server“ oder Application Server“ – ” ” am Markt etabliert. Das zeigt ebenfalls das Fehlen einer Rubrik Information Server“ ” in der bereits bekannten ServerWatch“, die Server der anderen Kategorien sehr wohl ” rezensiert. Der Hauptgrund liegt in der Tatsache, dass sich die am Markt befindlichen Information Server leicht in eine der beiden anderen Kategorien subsumieren lassen. Somit entfällt ein eigenes Segment für Information Server. Derzeit gibt es nur zwei Server, die von ihren Herstellern als Information Server bezeichnet werden: 1. Microsoft Internet Information Server 2. Hyperwave Information Server 26 Siehe Abschnitt 2.2 auf Seite 20 für Anforderungen an den Server. 33 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN Wie aus Tabelle 2.2 ersichtlich zählt der Microsoft Internet Information Server – kurz MSIIS – ohnehin zur Kategorie Web-Server. Der Hyperwave Information Server – kurz HWIS – kann als Application Server betrachtet werden, was sich aus der genaueren Studie in Abschnitt 3 erweist. Faktum ist allerdings, dass ein Information Server vom Blickwinkel Funktionalität aus gesehen, wesentlich mehr bieten muss, als bloß einen statischen Dokument-Baum zu verwalten. Der Name allein assoziiert gewisse Features, wie inherentes Dokument-Management, Inhaltsmanagement und natürlich Informationsmanagement. Gerade große Datenbestände, wie in Intranet-Umgebungen oft vorzufinden, benötigen diese im Server integrierten Tools zur effizienten Verwaltung, Wartung und Suche. Demnach sollte Microsoft seinen Server gemäß seines Leistungsgrades wirklich nur als Internet Server“ bezeichnen. ” 2.3 Web-Technologien Web-Applikationen leben von der Möglichkeit, in irgendeiner Weise dynamisch – im Englischen auch ,on the fly‘ – Web-Seiten zu generieren. Sie nehmen in den meisten Fällen session-abhängig Informationen aus einer Datenbank und verpacken diese in schön anzuschauendes HTML. Diese Grundanforderung an die Server Software hat nun eine Reihe von sogenannten Web-Technologien enstehen lassen, die einerseits bereits als Standard definiert wurden (zum Beispiel JavaScript, Java Servlets oder JSP) oder zum De-factoStandard geworden sind (zum Beispiel Server Side Includes). Die hier besprochenen Technologien sind alle für die Server-Seite bestimmmt, Technologien der Client-Seite, wie DHTML27 , XML oder CSJS28 können natürlich in den erzeugten Web-Seiten Anwendung finden. Die Unterscheidung in verschiedene Kategorien unter den in den nächsten Abschnitten betrachteten Web-Technologien fällt ungleich schwerer wie diese zwischen den verschiedenen Server-Typen. Ein mögliches Kriterium wäre aber die Leistungsfähigkeit oder der Einsatzbereich der Technolgie: PHP29 und Java Servlets erlauben den Zugriff auf verschiedene Datenbanken und sind auch sonst mit sehr mächtigen APIs ausgestattet, dagegen ist mit SSI30 hinsichtlich Database Connectivity überhaupt nichts 27 Dynamic HTML, siehe [Niederst, 1999, Kap. 24]. Client-Side JavaScript, siehe [csjsGuide, 1999; Flanagan, 1997]. 29 PHP: Hypertext Preprocessor, ein Hypertext Preprocessor, siehe Abschnitt 2.3.4. 30 Server Side Includes, siehe Abschnitt 2.3.1 28 34 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN möglich. In der Praxis stellt oft der Server selbst diese Technologien zur Verfügung, wie das parsen eines HTML-Dokuments nach SSI oder PHP Anweisungen, die entsprechend interpretiert werden müssen. Sonst ist dazu aber ein zusätzlicher Server oder ein zusätzliches Modul notwenig, wie etwa beim Servlets-Konzept des Apache. Zu den Standards und De-facto-Standards gesellen sich schließlich noch eine Unmenge von proprietären server-seitigen Skriptsprachen. Alle erlauben die Einbettung von bestimmten Tags 31 in Standard HTML, die der Server vor dem Schicken des Dokuments entsprechend der Anweisung ersetzt. Viele dieser Skriptsprachen sind als Meta-HTML zu bezeichnen. Beispiele sind RXML (Roxen Macro Language), oder PLACE [HwisPlace, 1999] des Hyperwave Information Servers. Die Abschnitte 2.3.1–2.3.7 untersuchen die derzeit wichtigsten Web-Technologien der Server-Seite genauer und erklären anhand von Beispielen deren Funktionalität. Der Schwerpunkt der Beispiele liegt in der Datenbank-Anbindung. Im Speziellen wird versucht mit den bereitgestellten Mitteln – Kommandos und Funktionen – der untersuchten Technologie, Daten aus einer MySQL32 Datenbank auszulesen und in einer HTMLTabelle zu formatieren. Das ist direkt entweder überhaupt nicht möglich (SSI) oder gestaltet sich jeweils als mehr oder weniger schwieriges Unterfangen. 2.3.1 SSI Server Side Includes (SSI) bieten die wohl einfachste Möglichkeit, HTML-Seiten etwas dynamischer zu gestalten. In ein normales HTML-Dokument werden SSI-Anweisungen eingebettet, die vor dem eigentlichen ,Senden‘ via HTTP vom Server interpretiert werden. SSI wird von zahlreichen Web-Servern als Feature angeboten, dennoch wurde nie ein richtiger Standard definiert. Gewisse Anweisungen haben sich aber als DeFacto-Standard durchsetzen können, da die meisten Server sie in der gleichen Syntax implementieren. SSI-Unterstützung alleine reicht noch nicht, der Server selbst muss passend konfiguriert werden, um schließlich SSI-Anweisungen interpretieren zu können. Abschnitt 4.2.1 beschreibt die Aktivierung von SSI beim Apache Web-Server. HTML-Dokumente mit SSI-Anweisungen werden oft durch die Extension .shtml“ ” gesondert gekennzeichnet, damit der Server nur diese Files nach Anweisungen parst. 31 32 Ein Befehl der vom Server verstanden und interpretiert wird, z. B.: <attr> ... </attr>. http://www.mysql.com 35 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN Die SSI-Anweisungen werden in der Form von HTML Kommentaren in das Dokument eingebunden: <!--#element attribute=value attribute=value ... --> Ein Leerzeichen vor dem abschließenden -->“ ist in der Regel für die richtige Ausführung ” notwendig. Folgende Anwendungsbereiche bieten sich für SSI an: • Einbinden von Dateien, zum Beispiel Header und Footer. • Ausgabe der Größe oder des Datums der letzten Änderung eines Dokuments. • Ausführen von CGI-Skripts oder Shell-Kommandos33 . • Ausgabe von Umgebungsvariablen des Servers. Eine bescheidene Liste, aber für das Einbinden kleiner ,Gimmicks‘ in Web-Seiten, wie einen CGI-Counter, vollkommen ausreichend. Tabelle 2.4 listet einige interessante SSIBeispiele mit Beschreibung auf. Zusätzlich existieren noch Anweisungen für eine rudiTabelle 2.4: Einige SSI-Beispiele mit Beschreibung <!--#include virtual="/include/footer.html" --> Einbinden einer Datei aus dem Verzeichnis /include. <!--#exec cgi="/cgi-bin/counter.cgi" -->" Ausführen eines CGI-Skripts. <!--#exec cmd="/bin/ls -la" --> Ausführen eines Shell-Kommandos. <!--#flastmod virtual="/staff/de/meisl.html" --> Datums der letzten Änderung der Datei meisl.html. <!--#fsize virtual="/staff/de/meisl.html" --> Größe der Datei meisl.html. mentäre Flußkontrolle, eine IF-Anweisung innerhalb eines SSI-Files kann zum Beispiel so aussehen: <!--#if expr="$REMOTE_HOST=lisa.tu-graz.ac.at" --> Hallo lisa.tu-graz.ac.at! <!--#endif --> 33 Bei der Ausführung von CGI’s und Shell-Kommandos ist Vorsicht geboten, unsicher implementierte Skripte können großen Schaden anrichten. 36 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN Sollte die Anfrage vom Host lisa.tu-graz.ac.at“ kommen, wird der Block bis zum ” <!--#endif -->“ ins HTML-Dokument übernommen. Für eine komplette Liste der ” verfügbaren Anweisungen siehe [Eilebrecht, 1999, Kap. 8] oder [Laurie & Laurie, 1999]. SSI sind für kleinere Aufgaben, wie Einbinden von oft verwendeten HTML-Stücken oder Aufrufen von kleinen CGI-Skripts sehr geeignet. Aufgrund des kleinen Vorrats an Anweisungen ist diese Technik auch äußerst schnell erlernbar. SSI können aber bestenfalls als primitive Unterstützung in Web-Applikationen angesehen werden. Weitere Informationen: http://www.sonic.net/~nbs/unix/www/ssi http://www.apache.org/docs/mod/mod_include.html 2.3.2 CGI Die wohl bewährteste Methode, dynamisch Web-Seiten zu erzeugen, stellt das Common Gateway Interface – kurz CGI – zur Verfügung. Wie bereits dem Namen zu entnehmen, handelt es sich dabei lediglich um eine Schnittstelle, die die Ausführung von Programmen am Server erlaubt. Die Programme können dabei in jeder beliebigen Programmieroder Skriptsprache ausgeführt werden. Die bekanntesten Sprachen sind: Unix Shell, Python, Tcl, Perl, C, C++, Java, Fortran, Visual Basic. Da hauptsächlich Skriptoder Interpretersprachen wegen ihrer höheren Flexibilität und leichteren Erlernbarkeit eingesetzt werden, hat sich auch die Bezeichnung CGI-Skript“ eingebürgert. Den De” facto-Standard unter den CGI-Sprachen stellt dabei Perl dar. CGI/1.1 wurde 1993 vom NCSA httpd Team definiert und im gleichnamigen Web-Server implementiert. Derzeit wird versucht CGI/1.1 und das neuere CGI/1.2 als Internet-Draft (RFC) zu etablieren. CGI-Skripte befinden sich entweder in speziellen Verzeichnissen (z.B.: cgi-bin) am Server oder können sich überall im Dokument-Baum befinden und werden anhand der File-Extension (z.B.: .cgi oder .pl) als solche deklariert. Der Aufruf eines CGI-Skripts kann über eine der beiden HTTP-Methoden34 GET oder POST erfolgen. In HTML- Formularen sind beide Methoden möglich, beim Aufruf des Skripts über eine URL kommt GET zum Einsatz: 34 Siehe RFC 2616 [Fielding et al., 1999, Sec. 9] für eine genaue Beschreibung aller HTTP-Methoden. 37 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN GET /cgi-bin/my.pl HTTP/1.0 Abbildung 2.3: Kommunikationsabläufe zwischen Client, Server und einem CGI-Skript in Perl. Abbildung 2.3 stellt den Kommunikationsablauf zwischen Client, Server und CGI-Skript schematisch dar. Wird ein CGI-Skript über die POST-Methode aufgerufen, so kommuniziert der Server direkt mit dem Standard Input (STDIN) des Skripts. Wird ein CGI-Skript über die GET-Methode aufgerufen, erhält es über die Umgebungsvariblen des Servers seinen Input. Im einfachsten Fall werden gar keine Daten an das Skript übergeben. Listing 2.1 erzeugt beispielsweise ein simples HTML-Dokument, das lediglich das aktuelle Datum und die aktuelle Uhrzeit ausgibt. Listing 2.1: hello.pl 1 2 3 4 5 6 7 8 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML><HEAD><TITLE>Hello World CGI</TITLE></HEAD>\n"; print "<BODY><CENTER>\n"; print "<H1>Hello World CGI</H1>\n"; $time = localtime; print "The date is:$time\n"; print "</CENTER></BODY></HTML>\n"; Zeile 1 des Skripts definiert den Namen des Programms, das den restlichen Inhalt interpretieren soll, in unserem Fall übernimmt ein Perl-Interpreter diese Aufgabe. Wichtig für jedes CGI-Skript ist die Erzeugung eines primitiven HTTP-Headers, der im minimalen Fall nur den Content-type angibt. Der Client kann daraus auf die Art der übermittelten Daten schließen und stellt diese entsprechend dar. In Listing 2.1, Zeile 38 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN 2 wird der Content-type mit text/html angegeben, die anschließend durch \n\n“ er” zeugte Leerzeile dient zum Abschluß des HTTP-Headers. Das restliche Skript generiert entsprechend des angegebenen Content-type ein einfaches HTML-Dokument. Auch bei komplizierteren Aufgabenstellungen, wie dem Zugriff auf eine Datenbank, erweist sich das Duo“ CGI und Perl als sehr dynamisch. Perl stellt dafür ein Database ” Interface (DBI) Modul zur Verfügung, das unter Verwendung spezieller Treiber (Database Driver, DBD), mit verschiedenen Datenbanken zusammenarbeiten kann. Diese speziellen Treiber führen auch die eigentlichen Operationen mit der Datenbank durch. Abbildung 2.4 zeigt den Datenfluß, von einem Perl-Skript über DBI und verschiedenen DBD zu drei relationalen Datenbank-Systemen (RDBMS35 ). Die Implementierung Abbildung 2.4: Datenfluß über das DBI Modul und speziellen DBD zu verschiedenen RDBMS. neuer Treiber gestaltet sich aufgrund der in Abbildung 2.4 dargestellten Architektur als unbeschwerlich und sehr effizient. Die Interaktion mit der Datenbank erfolgt im Detail über drei Perl-Objekte, die als Handles bezeichnet werden: 1. Driver Handle: Repräsentiert einen geladenen DB-Treiber. Die Instanziierung erfolgt indirekt über DBI->connect. 2. Database Handle: Kapselt eine einzelne Verbindung zu einer bestimmten DB. Der eigentliche Verbindungsaufbau erfolgt über: $dbh = DBI->connect($data_source,... ); 35 Relational DataBase Management System 39 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN 3. Statement Handle: Kapselt ein einzelnes SQL-Statement, das innerhalb der DB exekutiert wird. Die Instanziierung erfolgt über: $sth = $dbh->prepare(’<SQL-Statement>’); Wie die drei Handles zusammenhängen und durch welche Perl-Variable sie typischerweise angesprochen werden, ist in Abbildung 2.5 dargestellt. Die abgebildete Struktur der Abbildung 2.5: DBI Handles mit zugehörigen Perl-Variablen Handles ist auch im Code-Beispiel (Listing 2.2) zu finden und definiert jeweils nur EinKind-Beziehungen. In der Praxis sind Mehr-Kind-Beziehungen die Regel, das heißt ein Driver Handle hat eventuell mehrere Database Handles und jeder Database Handle eventuell mehrere Statement Handles. Listing 2.2 verwendet nebem dem DBI Modul auch das CGI Modul (Zeile 3), das den Aufbau und die Manipulation von HTML-Dokumenten mit zahlreichen Methoden vereinfacht. In Zeile 11 und 12 generiert die Methode header() einen HTTP-Message Header, in Zeile 13 und 14 erzeugt start_html einen HTML Header und end_html() in Zeile 22 schließt das HTML-Dokument mit den entsprechenden Tags. Dazwischen werden Daten mit Hilfe der erwähnten Handles aus einer MySQL-DB gelesen und in einer HTML-Tabelle formatiert. Listing 2.2: Products.pl erzeugt über DBI eine Verbindung mit einer MySQL-DB und füllt eine HTML-Tabelle mit Daten. 1 #!/usr/bin/perl -w 2 use DBI; # DBI Module 3 use CGI; # CGI Module 4 my $cgi_obj = new CGI; 5 my $data_source = ’dbi:mysql:test;www.amft.tu-graz.ac.at;3306’; 6 my $dbh = DBI->connect($data_source,’test’,’test’) || 7 die "Can’t connect to Server: $DBI::errstr\n"; 8 my $sth = $dbh->prepare( ’SELECT * FROM Products’ ) || 40 2 WEB-APPLIKATIONEN 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2.3 WEB-TECHNOLOGIEN die "Can’t prepare Statement: $DBI::errstr\n"; $sth->execute || die "Can’t execute Query: $DBI::errstr\n"; print $cgi_obj->header( -type=>’text/html’, -expires=>’+1h’); print $cgi_obj->start_html(-title=>’CGI - Perl - MySQL’, -DTD=>’-//W3C//DTD HTML 3.2//EN’ ); print $cgi_obj->h1(’Products:’); print "<TABLE BORDER=1>\n"; while ( my @ergebnis = $sth->fetchrow_array ){ print "<TR><TD>".$ergebnis[0]."</TD><TD>"; print $ergebnis[1]."</TD></TR>\n"; } print "</TABLE>\n"; print $cgi_obj->end_html; $sth->finish; $dbh->disconnect; Die Variable $data_source in Zeile 5 definiert im ersten Teil den DBI-Treiber und die Datenbank (dbi:mysql:test), im zweiten Teil den Namen des DB-Servers (www.amft.tugraz.ac.at) und im dritten Teil das Port des DB-Servers (3306). Mit dieser Information, Benutzer und Passwort, gelingt die Verbindung mit der MySQL-DB bei entsprechenden Rechten über DBI->connect() reibungslos. Die eigentliche Ausführung eines SQLKommandos erfolgt mit den Anweisungen in Zeile 8-10. Die Methode fetchrow_array() (Zeile 17) liest eine einzelne Zeile des Ergebnisses in ein Array (@ergebnis). Die Einträge des Ergebnis-Feldes @ergebnis werden mit HTML-Tags in Zeile 18 und 19 kombiniert und liefern zusammen eine formatierte HTML-Tabelle. Somit bleibt am Ende nur mehr der Abbruch der DB-Verbindung mittels $dbh->disconnect in Zeile 24. CGI ist als Web-Technologie nicht mehr weg zu denken. Vom einfachen Gästebuch bis zum ausgefeilten Warenkorb-System reichen die CGI-Web-Applikationen, die sich im tagtäglichen Einsatz bewähren. Perl hat sich dabei als zuverlässiger Partner“ erwiesen ” und stellt hilfreiche Bibliotheken (Module), wie CGI, DBI, LWP36 dem Programmierer zur Verfügung. Vorsicht sollte aber stets bei der Programmierung gegeben sein, denn Sicherheitslöcher in CGI-Skripts sind beliebte Ziele von Angreifern. Der große Schwachpunkt von CGI liegt im Faktum, dass bei jedem CGI-Aufruf ein eigener Pro36 Library for Web Programming. 41 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN zess abgespaltet wird. Dies kann zu vehementen Leistungseinbußen führen und hat auch zur Entwicklung von Alternativen wie FastCGI (Abschnitt 2.3.3), embedded CGI, Emulatoren wie mod_perl (Abschnitt 4.2.2) oder Server APIs, wie NSAPI37 oder ISAPI38 beigetragen. Dennoch scheint die Popularität von CGI noch ungebrochen und die Bestrebungen nach einer verbesserten CGI-Spezifikation (CGI/1.2) sind auch Beweis dafür, dass CGI noch immer konkurrenzfähig ist und bleiben möchte. Diese Situation beschreibt Lincoln Stein [Stein, 1999] sehr prägnant und treffend so: CGI is dead. Long live CGI!“ ” Weitere Informationen: http://www.w3.org/CGI http://Web.Golux.Com/coar/cgi http://www.oreilly.com/catalog/perldbi/chapter/ch04.html http://stein.cshl.org/WWW/software/CGI/cgi_docs.html 2.3.3 FastCGI Eine Technologie, die einerseits die Schwächen von CGI ausmerzen und andererseits dessen Stärken übernehmen möchte, ist das von Open Market 39 im Jahre 1996 entwickelte FastCGI Web-Server-Interface. Die Hauptschwächen von CGI sind: • Geringe Performance. Jeder Request erzeugt einen eigenen Prozess, wie in Abschnitt 2.3.2 bereits angesprochen. • Fehlende Persistenz. Bei jedem Request muss eine Applikation erneut initialisiert werden. Persistenz würde zum Beispiel auch das Cachen“ von Daten erlauben. ” • Nicht skalierbar. Das Auslagern einer resource-intensiven Applikation auf einen anderen Server – Load Distribution – ist nicht möglich. Dem gegenüber definiert sich FastCGI [Saccoccio, 1999] wie folgt als: 37 Netscape Server API, http://developer.netscape.com/docs/manuals/enterprise/nsapi. Internet Server API, http://www.genusa.com/isapi. 39 http://www.openmarket.com. 38 42 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN • Eine sprach- und server-unabhängige, skalierbare offene Erweiterung von CGI, die hohe Performance und Persistenz garantiert. • Ein Protokoll zum Datenaustausch zwischen Web-Server und einer FastCGI-Appliktion. • Ein Paket von Libraries, die das Protokoll implementieren. Konzeptionell ist FastCGI sehr ähnlich zu CGI mit zwei Hauptunterschieden [OpenMarket, 1996]: 1. FastCGI-Prozesse sind persistent: Nach der Beendigung eines Aufrufs, wartet der Prozess auf einen erneuten Aufruf anstatt sich zu beenden. 2. Anstelle von Umgebungsvariablen und Pipes verwendet FastCGI ein eigenes Protokoll, dass über eine full-duplex Verbindung die Informationen von Standard-Input, -Output und -Error multiplext. Abbildung 2.6 veranschaulicht diese Relation zwischen Web-Server und FastCGI. Abbildung 2.6: Beziehung zwischen Web-Server und FastCGI Mit diesem Ansatz kann eine FastCGI-Applikation lokal oder auf einem entfernten Rechner laufen, womit der Anforderung nach Skalierbarkeit nachgekommen wird. Bei entfernten Applikationen verwendet der Server eine TCP-Verbindumg. Zusätzlich erlaubt FastCGI single-threaded oder multi-threaded Applikationen. Multi-threaded Applikationen können gleichzeitig mehrere Verbindungen vom Web-Server annehmen und diese innerhalb eines einzelnen Prozesses verarbeiten. Thread-Sicherheit ist für derartige Applikationen primäre Voraussetzung. Die eingschränkte Funktionalität von CGI, nämlich nur auf einfache Anfragen reagieren zu können, erweitert FastCGI mit der Einführung sogenannter Rollen (roles). Eine Applikation kann nun eine von drei verschiedenen Rollen übernehmen: 43 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN 1. Responder. Entspricht der einfachen Funktionalität, die von CGI bereitgestellt wird. 2. Filter. Erlaubt die Verarbeitung eines Files bevor es an den Client gesendet wird, zum Beispiel bei On-the-fly Format-Konversionen. 3. Authorizer. Überprüft vor Ausführung der Anfrage, ob eine entsprechende Berechtigung dazu vorhanden ist, zum Beispiel über eine Password-Authentifizierung. Open Market stellt für die rasche Entwicklung von FastCGI-Applikationen sogenannte Application Libraries für die Sprachen C/C++, Java, Perl, Python und Tcl zur Verfügung. Wie aus Listing 2.3 ersichtlich gibt es zum Beispiel für Perl ein eigenes Modul FCGI, dass Methoden für FastCGI-Skripts bereitstellt. Listing 2.3: HelloWorld.pl mit FastCGI 1 2 3 4 5 6 7 8 9 #!/usr/bin/perl -w use FCGI; $count=0; while (FCGI::accept() == 0) { print("Content-type: text/html \n\n", "<H1> Hello World with FastCGI </H1>\n", "Request ", ++$count, " from Server ", $ENV{’SERVER_NAME’}); } In dem einfachen Fall von Listing 2.3 wird bei jeder Anfrage ein Zähler inkrementiert, der die Anzahl der Zugriffe speichert. Die Methode FCGI::accept() akzeptiert dabei eine neue Anfrage und beendet implizit die letzte. Vorhandene Perl-CGI-Skripts müssen einfach in die in Listing 2.3 gezeigte While-Schleife gepackt werden, um als FastCGI ebenso ihren Dienst zu verrichten. Derzeit unterstützen zahlreiche Server FastCGI als server-seitige Technologie. Dazu zählen Apache (mod_fastcgi), Microsoft Server, Netscape Server und Zeus. Weitere Informationen: http://www.fastcgi.com 44 2 WEB-APPLIKATIONEN 2.3.4 2.3 WEB-TECHNOLOGIEN PHP PHP steht offiziell für PHP: Hypertext Preprocessor und ist eine server-seitige, in HTML eingebettete Skriptsprache. Ausgangspunkt waren die von Rasmus Lerdorf im Jahre 1995 entwickelten Personal Home Page Tools, die bald danach unter dem Akronym PHP2 bekannt wurden. Die aktuellste Version (zur Zeit PHP 3.014) kann unter der Adresse http://www.php.net frei bezogen werden. Derzeit soll PHP auf über 150.000 Web Sites in der ganzen Welt Verwendung finden, Tendenz stark steigend. Vergleichbar mit SSI werden als PHP gekennzeichnete Files – üblicherweise Files mit der Extension .php“ oder .php3“ – vor dem Versenden vom PHP-Interpreter (meistens ” ” im Web-Server integriert) nach PHP-Anweisungen geparst. Listing 2.4 zeigt ein Beispiel, wie über PHP-Anweisungen das aktuelle Datum ausgegeben werden kann. Listing 2.4: HelloWorld.php3 1 2 3 4 5 6 7 8 9 10 <HTML><HEAD> <TITLE>Hello World with PHP3<TITLE> </HEAD><BODY> <H1>Hello World with PHP3 !!<H1> <? // $today=date("Y-m-d"); // PRINT "Today is:"; PRINT "<B> $today </B>"; // ?> // </BODY></HTML> starts the PHP script use of the ’date’ function e.g.: ’2000-01-15’ closes the PHP script Die Syntax ist sehr von C, aber auch Java und Perl beeinflußt und erlaubt dem Anfänger ein rasches Einarbeiten in die Sprache. Alle Anweisungen zwischen <?“ und ?>“ Tags ” ” werden vom Server als PHP interpretiert. PHP kann prinzipiell alles was mit CGI möglich ist, versteht mit regulären Ausdrücken umzugehen, unterstützt Objekte und spricht zahlreiche Protokolle wie IMAP40 , SNMP41 , NNTP42 , POP343 oder auch HTTP, was die Kommunikation mit anderen Diensten erleichtert. Die wesentliche Stärke von PHP liegt aber in der Unterstützung einer breiten Masse von Datenbanken. Zur Veranschaulichung sollen hier nur einige aufgezählt werden: 40 Internet Message Access Protocol. Simple Network Management Protocol. 42 Network News Transfer Protocol, RFC 977. 43 Post Office Protocol 3. 41 45 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN • Oracle • Informix • Unix dbm • dBase • MySQL • Sybase Ein Beispiel wie man über PHP-Anweisungen Daten aus einer MySQL-Datenbank auslesen und damit ein HTML-File erstellen kann, wird in Listing 2.5 dargestellt: Listing 2.5: telefon.php3: Auslesen von Tel.Nr. aus einer MySQL-Datenbank mittels PHP. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <HTML><HEAD> <TITLE>telefon.php3</TITLE> </HEAD><BODY> <H2>Telefonnumern aus einer DB:</H2> <? mysql_connect("localhost","gwurze","gwurze") OR die("Kann SQL-Server nicht erreichen"); mysql_select_db("gwurze") OR die("DB nicht erreichbar"); ?> <table border=1> <tr><th>Name</th><th>Telefon</th></tr> <? $pers = mysql_query("SELECT NachN,VorN,Tel1,Tel2 FROM Personen"); while ($row=mysql_fetch_row($pers)) { print"<tr><td>".$row[0]." ".$row[1]."</td>"; print"<td>".$row[2]." ".$row[3]."</td></tr>\n"; } ?> </table> </body></html> Im gegebenen Fall wurde ein Apache Web-Server unter Linux mit PHP3 Unterstützung verwendet, man spricht dann abgekürzt von einem LAMP-System: Linux, Apache, MySQL und PHP, siehe [Reeg, 1999; Zhang, 1999]. Den Vorteil, den man beim Einsatz von PHP genießt, sind die einfach zu handhabenden Funktionen für die DatenbankManipulation: • mysql_connect verbindet zum MySQL-Server mittels Benutzername und Passwort. 46 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN • mysql_select_db wählt die zu benutzende Datenbank aus. Das gelingt nur, wenn die entsprechenden Rechte am MySQL-Server für den Benutzer gesetzt sind. • mysql_query sendet eine SQL-Query an den MySQL-Server. Im Beispielsfall werden aus der Tabelle Personen Daten selektiert. Die Funktion liefert bei Erfolg einen positiven ,Result Identifier‘. • mysql_fetch_row liest eine Zeile aus dem mittels ,Result Identifier‘ assoziierten Ergebnis der SQL-Query und erzeugt damit ein Array. Die Einträge dieses Arrays werden dann in eine HTML-Tabelle verpackt. Mit diesem Rüstzeug eröffnet sich eine sehr komfortable Möglichkeit für Web-Applikation. Durch die rasche Weiterentwicklung von PHP wachsen auch die Marktanteile gegenüber ASP und CF44 , die mit PHP schon jetzt einen ernstzunehmenden Gegner haben. Jim White bezeichnet in [White, 1999] nicht umsonst PHP als Silent Killer“. ” Weitere Informationen: http://www.php.net http://www.php.de http://www.phpbuilder.com http://phpwizard.net 2.3.5 Server-Side JavaScript JavaScript ist Netscape’s Plattform-übergreifende und Objektorientierte Skriptsprache [ssjsGuide, 1999]. Damit ist nach dem ersten Satz bereits offensichtlich, dass es sich dabei um eine proprietäre Skript-Sprache handelt, die später aus marktwirtschaftlichen Überlegungen zum offenen Standard wurde. Mit dem Namen JavaScript“ – ursprünglich ” LiveScript – wollte man auf die syntaktische Verwandtschaft mit Java hinweisen, aber primär vom damals einsetzenden Java-Hype“ profitieren. ” Wird allgemein von JavaScript“ gesprochen, ist in den meisten Fällen die Version ” der Client-Seite gemeint. Zusätzlich hat Netscape auch eine Version für die Server-Seite 44 Cold Fusion, ein kommerzielles Entwicklungs-Tool für Web-Applikationen. 47 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN entwickelt, die für die typischen Anforderungen an eine Web-Applikation – RDBS- und File-Handling – angepasst ist. Sowohl Client-Side (CS) und Server-Side (SS) JavaScript besitzen den selben Sprachkern, der als Core JavaScript bezeichnet wird. Abbildung 2.7 zeigt, dass durch Erweiterung der Funktionalität von Core JavaScript – sprich zusätzlichen Objekten – SS oder CS JavaScript abgeleitet wird. Die wichtigsten Sprach- Abbildung 2.7: Komponenten von JavaScript Merkmale von JavaScript sind gleichzeitig die wichtigsten Unterscheidungsmerkmale zu einer rein objekt-orientierten Sprache wie Java: • JavaScript ist eine interpretierte Sprache im Gegensatz zu C/C++ oder Java. • JavaScript ist untypisiert, d.h. der Typ einer Variable muss bei der Definition oder beim Auftreten nicht festgelegt werden. • Ein JavaScript Objekt ist ähnlich einem assoziativen Array (Hash). • JavaScript ist prototype-based im Gegensatz zu class-based, d.h. es gibt keine Unterscheidung zwischen Klasse und Instanz im Sinne des OO-Paradigmas. • JavaScript realisiert über eine sogenannte prototype chain Vererbung. In [jsOOP, 1997] ist dieser nachgeahmte Vererbungs-Mechanismus genauer erklärt. Da ein Web-Server mit SSJS Unterstützung als Client einer Datenbank agieren kann, 48 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN drängte sich“ auch Netscape [ssjsGuide, 1999] die moderne 3-schichtige-Architektur na” hezu auf“. Folgende Schichten lassen sich dabei identifizieren. ” 1. Web-Client: HTML-Parser und JavaScript Interpreter. 2. Web-Server: JavaScript Applikation mit JavaScript Runtime Engine. 3. Datenbank Server. Das Pendant der SCRIPT-Tags45 auf der Client-Seite sind die Server-Tags auf der ServerSeite. Für die weitere Betrachtung soll Listing 2.6 als Beispiel dienen: Listing 2.6: hello.html mit Server-Side JavaScript. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <HTML><HEAD> <TITLE>Hello World with Server-Side JavaScript</TITLE> </HEAD><BODY> <H1>Hello World</H1> Your IP address is <SERVER> write(request.ip); writeln("<P>Last time you were "+client.oldname+"."); writeln("<P>This time you are "+request.newname+"."); client.oldname=request.newname; if client.number == null client.number = 0; else client.number = 1+parseInt(client.number,10); </SERVER> <FORM method="post" action="hello.html"> <INPUT type="text" name="newname" size=20> <INPUT type="submit"><INPUT type="reset"> </FORM> <P>You have been here <SERVER>write(client.number);<SERVER> times. </BODY></HTML> Das erste auffallende Merkmal ist die Mischung aus HTML und JavaScript-Anweisungen innerhalb des Files. Beide JS-Blöcke – 1. Block: Zeile 6–15 und 2. Block: Zeile 20 – werden durch ein <SERVER>“-Tag eigeleitet und durch </SERVER>“ abgeschlossen. Die erste ” ” 45 CSJS-Anweisungen stehen innerhalb des HTML-Codes zwischen <SCRIPT> und </SCRIPT> Tags 49 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN Aufgabe von hello.html“ ist die Ausgabe der IP-Adresse des Clients. Dazu stellt die ” JavaScript Runtime Engine das Objekt request zur Verfügung, das diverse Informationen des Aufrufers in Properties des Objekts speichert. Wie aus Zeile 7 ersichtlich, kann man über write(request.ip)“ bequem die entsprechende Adresse ausgeben. ” Als zweite Aufgabe wird die Anzahl der Zugriffe vom gleichen Client gezählt. In Zeile 11-14 wird dem client Objekt, das Session-Informationen eines bestimmten Clients speichert, die Property number“ beim ersten Aufruf hinzugefügt, die bei jeden weiteren ” Request inkrementiert wird. In Zeile 20 erfolgt die Ausgabe der Zugriffe. In der dritten Aufgabe wird in einem Formular nach dem Namen des Benutzers gefragt, der beim nächsten Aufruf ausgegeben wird. Dazu wird ein Eingabe-Feld des Formulars – in diesem Fall das Feld newname“ – automatisch zu einer Property des ” request Objekts des in der Aktion des Formulars definierten Dokuments. Um hello.html“ am Server zum Laufen zu bringen, muss es zuvor in eine binäre ” Form kompiliert werden. Beim Netscape Enterprise Server übernimmt diese Aufgabe ein Commandline-Tool mit dem Namen jsac46 . Der Aufruf jsac -v -o hello.web hello.html erzeugt aus hello.html“ ein Applikationsfile hello.web“, das abschließend nur mehr ” ” am Server installiert werden muss. Durch Eingabe der Applikations-URL kann die Anwendung gestartet werden. Alternativ kann der Start auch über den Application Manager des Servers erfolgen, wie es beim Netscape Enterprise Server exerziert wird. Neben Objekten des Session Management Service – request, client, session, server – benötigt eine Web-Applikation in zweiter Linie Zugriffsmöglichkeiten auf verschiedene Datenbanksysteme. Netscape stellt für diese Anforderung das LiveWire Database Service zur Verfügung, das Objekte für die Datenbank-Manipulation enthält. Mit folgenden Datenbanksystemen können Transaktionen stattfinden: • Informix • DB2 • Oracle • DB-Server, die den ODBC-Standard • Sybase verwenden. Da LiveWire“ eine sehr proprietäre Lösung für diese Aufgabe ist, sollen hier nur im ” 46 JavaScript Application Compiler 50 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN Überblick die Objekte und deren Funktionalität beschrieben werden. Um mit einer DB Verbindung aufzunehmen, gibt es zwei Möglichkeiten: Mit dem vordefinierten Objekt database, das eine einzelne Verbindung kapselt oder mit dem flexibleren Objekt DbPool, das mehrere Verbindungen zu verschiedenen Datenbanken erlaubt. Ein neuer DB-Pool wird mit dem folgenden Statement erzeugt: pool = new DbPool("ORACLE","myserver","name","secret","test"); Der erste Parameter gibt den Typ des DB-Servers als vordefinierten String an, der zweite Parameter den Namen des DB-Servers und die restlichen Parameter Benutzername, Passwort und Name der Datenbank. Daten können danach wie folgt ausgelesen werden: conn = pool.connection("A Test Connection"); conn.SQLTable("select * from personen"); conn.release(); Über pool.connection() holt man sich ein Connection Objekt aus dem Pool. Die Methode SQLTable des Connection-Objekts generiert aus dem Ergebnis des SQl-Statements automatisch eine HTML-Tabelle für die Ausgabe. Das abschließende conn.release() entläßt“ die verwendete Verbindung wieder an den Pool. Mit nur vier Statements er” reicht man bequem das gleiche Ergebnis, wozu andere Technologien 25 und mehr Anweisungen benötigen. Ein wirklicher Brückenschlag zu Java gelingt Netscape mit dem Konzept von LiveConnect. Damit können JavaScript-Objekte direkt auf Java-Klassen oder CORBAObjekte zugreifen. Server-Side JavaScript bietet zusammen mit den Erweiterungen LiveWire und LiveConnect einen vollständigen Baukasten“ für Web-Applikationen der verschiedensten ” Art. Vorausgesetzt man nennt einen Netscape (seit kurzem iPlanet) Server sein Eigen. Der Hyperwave Information Server stellt sein API ebenfalls in Form von JavaScript Objekten zur Verfügung. Weitere Informationen: http://developer.netscape.com/docs 51 2 WEB-APPLIKATIONEN 2.3.6 2.3 WEB-TECHNOLOGIEN Java Servlets Java Servlets bieten eine sehr mächtige Möglichkeit, Web-Applikationen zu bauen, die leicht auf bereits vorhandene Systeme (z.B.: Datenbanken) zugreifen können. Was ist nun ein Servlet? Die Java Servlet Specification Version 2.2 [JServSpec2.2, 1999] definiert Servlets wie folgt: Ein Servlet ist eine Web-Komponente (im Engl.: web component), die über einen Kontainer (Servlet Engine 47 ) gemanagt, dynamische Inhalte generiert. Servlets sind ,kleine‘ plattform-unabhängige Java Klassen, die nachdem sie in neutralen Bytecode kompiliert wurden, von einem Web-Server dynamisch geladen und zum Laufen gebracht werden können. Servlets interagieren mit Web-Clients über ein RequestResponse-Schema (basierend auf das Hypertext Transfer Protocol), das vom Servlet Kontainer implementiert wird.“ ” Vereinfachend kann ein Servlet auch mit einem Applet48 verglichen werden, das auf der Server-Seite läuft und daher keine grafische Oberfläche besitzt. Folgende Vorteile bietet der Einsatz von Java Servlets: 1. Plattform-Unabhängigkeit 2. Zugang zu allen Java API’s 3. Schneller als CGI Scripts49 4. Session-Management Zur Ausführung des Servlets ist eine sogenannte Servlet Engine notwendig, die Anfragen an bestimmte Servlets weiterleitet. Die Servlet Engine ist entweder direkt im Web-Server integriert (JavaSoft Java Web Server) oder eine eigene Server-Applikation (Apache, siehe Abschnitt 4.2.4). Abbildung 2.8 zeigt, welche Methoden von der Servlet Engine während des Servlet’s Life Cycle aufgerufen werden. Die init() Methode dient zur Initialisierung des Servlets, das geschieht entweder bei der ersten Verwendung des Servlets oder schon vorher. Die service() Methode kann mit der main() Methode einer 47 Eine Servlet Engine ist eine Server-Applikation, die Servlets ausführt. Eine kleine in Java [Campione & Wallrath, 1999] geschriebene Applikation. 49 Gewöhnliche CGI’s spalten beim Request jeweils einen neuen Prozess ab, Servlets hingegen sind nur einfache Threads. 48 52 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN Abbildung 2.8: Die verschiedenen Stufen bei der Ausführung eines Servlets innerhalb der Servlet Engine. Quelle: [Mazzocchi & Fumagalli, 1998]. Java Applikation verglichen werden. Für das abschließende Aufräumen der besetzten Resourcen wird die destroy() Methode verwendet. Bei der Programmierung eines Servlets müssen diese Methoden entsprechend angepaßt werden, weiters muss das Servlet direkt oder indirekt das javax.servlet.Servlet Interface implementieren. Der einfachere Weg ist das Überschreiben von Methoden einer vorhandenen Servlet-Klasse, wie zum Beispiel der javax.servlet.http.HttpServlet Klasse. Listing 2.7 zeigt ein vom HttpServlet abgeleites Servlet, das nur die doGet() Methode überschreibt, die dem HTTP Get entspricht. Listing 2.7: Hello, ein vom HttpServlet abgeleitetes Java Servlet 1 2 3 4 5 6 7 8 9 10 11 12 13 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class Hello extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // get an PrintWriter from the response object PrintWriter out = response.getWriter(); // prepare the response’s content type response.setContentType("text/html"); // get the IP address of the client String remoteAddress = request.getRemoteAddr(); 53 2 WEB-APPLIKATIONEN 14 // print to the output stream! out.println("Hi Man from <b>" + remoteAddress + "</b>"); 15 16 17 2.3 WEB-TECHNOLOGIEN } } Vorausgesetzt der Server unterstützt Java Servlets, kann nun das Servlet via WebBrowser50 aufgerufen werden, dass im Gegenzug ein simples – in unserem Fall sogar unvollständiges – HTML-Dokument an den Client sendet. Akzeptiert das Servlet den Aufruf, werden der doGet Methode zwei Objekte übergeben, eines der Klasse HttpServletRequest und eines der Klasse HttpServletResponse. Das erste Objekt (request) kapselt die ,eingehende‘ , das andere Objekt (response) die ,ausgehende‘ Kommunikation und vereinfacht das Handling mit dem Hypertext Transfer Protokoll. Zum Beispiel wird in Listing 2.7, Zeile 11 der MIME51 -Type der HTTP-Antwort festgelegt. Ein etwas sinnvollerer Anwendungsbereich von Servlets ist deren Einsatz zur Kommunikation mit Datenbanken. Die benötigte Schnittstelle zu Datenbanken wird durch das JDBC52 API realisiert, dass für alle bekannten Datenbanken Treiber zur Verfügung stellt. Ein Verbindungsaufbau mit einer MySQL Datenbank zeigt das folgende Java Code-Stück aus der init() Methode eines Datenbank Servlets: Class.forName("org.gjt.mm.mysql.Driver").newInstance(); dbc = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDB?" +"user=name&password=paswd"); Das erste Statement erzeugt ein Connection-Objekt, das die Verbindung zur Datenbank kapselt. Dazu wird ein passender JDBC-Driver für die Datenbank benötigt, in unserem Fall heißt dieser org.gjt.mm.mysql.Driver“. Das zweite Statement stellt nun eine ” konkrete Verbindung zur Datenbank her und diese bleibt während der Lebenszeit des Servlets aufrecht. Das Auslesen aller Datensätze einer Tabelle Produkte“ kann zum ” Beispiel so geschehen: 1 Statement stmt = dbc.createStatement(); 2 stmt.execute("select * from Produkte"); 50 Aufruf über URL, zum Beispiel http://localhost/servlets/Hello. Multipurpose Internet Mail Extensions, siehe [Freed & Borenstein, 1996]. 52 Java DataBase Connectivity. Ein Java API zum Ausführen von SQL-Statements, stellt eine Reihe von Klassen und Interfaces zur Manipulation von Datenbanken zur Verfügung. 51 54 2 WEB-APPLIKATIONEN 3 2.3 WEB-TECHNOLOGIEN ResultSet rs = stmt.getResultSet(); Mit der Möglichkeit, SQL-Statements zu exekutieren (siehe Zeile 2), steht nun die gesamte Funktionalität der Datenbank zur Verfügung. Der Einsatz von RMI53 würde den Code des Servlets noch zusätzlich vereinfachen und die Komplexität des Datenbank-Handlings auf eine zusätzliche Schicht verlagern. Die Servlets-Technologie wird von einer immer größer werdenden Anzahl von Servern unterstützt und bietet eine gute Alternative zu CGI basierenden zeitkritischen Applikationen. Zusätzliches Session-Management erlaubt nun endgültig die Interaktivität zu erhöhen. Mit Java hat man zudem den Vorteil, auf einer großen Menge von Plattformen ohne Probleme lauffähige Applikationen erzeugen zu können und von der Mächtigkeit der vorhandenen APIs zu profitieren. Zur Zeit ist die Java Servlet API Specification Version 2.2 unter http://java.sun.com/products/servlet/2.2 verfügbar. Weitere Informationen: http://java.sun.com/products/servlet/index.html http://java.sun.com/docs/books/tutorial/servlets/TOC.html http://java.sun.com/products/jdbc 2.3.7 JavaServer Pages Eine weitere Möglichkeit, der Anforderung nach dynamisch generierten Inhalten im WWW nachzukommen, ist der Einsatz von JavaServer Pages, kurz JSP. Mit JSP soll es per definitionem noch leichter möglich sein, die Präsentations-Logik von der ApplikationsLogik zu trennen. Die JSP Technologie ist in enger Verbindung mit Java Servlets des letzten Abschnittes zu sehen, da jeder JSP Request ein Java Servlet erzeugt, das die eigentliche Ausgabe erledigt. Die Verarbeitung von JSP Files (.jsp) erfolgt ebenfalls durch einen Satz von Java Servlets am Server. Die JavaServer Pages Spezifikation 1.1 [JSPSpec1.1, 1999] definiert nun JSP wie folgt: A JSP page is a text-based document that describes how to process a request ” 53 Remote Method Invocation, siehe http://java.sun.com/docs/books/tutorial/rmi. 55 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN to create a response. The description intermixes template data with some dynamic actions and leverages on the Java Platform.“ Dazu kombiniert ein JSP Dokument Standard-HTML mit speziellen JSP Elementen, die von der sogenannten JSP Engine 54 vor dem Senden des Dokuments verarbeitet und durch entsprechendes HTML ersetzt werden. Wie bei der Servlet-Technologie des letzten Abschnittes hat man sämtliche Java APIs zur Applikations-Entwicklung zur Verfügung. Listing 2.8 zeigt ein simples JSP Beispiel, das die java.util.Date Klasse verwendet, um das aktuelle Datum und die aktuelle Uhrzeit auszugeben. Listing 2.8: HelloWorld.jsp 1 2 3 4 5 6 7 <HTML><HEAD> <TITLE>Hello World with Java Server Pages (JSP)</TABLE> <%@ page import="java.util.Date" %> </HEAD><BODY> <H1>Hello World !!</H1> The current date is <%= new Date() %>. </BODY></HTML> Ein JSP-Block startet in den meisten Fällen mit der Zeichenfolge ,<%‘ und endet mit der Zeichenfolge ,%>‘. Die page import Anweisung in Zeile 3 von Listing 2.8 importiert die Klasse java.lang.Date, die in Zeile 6 über ein new Date() instanziiert wird. Beim Parsen des JSP Dokuments ersetzt die JSP Engine diese Anweisungen mit den enstprechenden Ausgaben: Zeile 3 erzeugt keine Ausgabe und in Zeile 6 erscheint Datum und Uhrzeit in textueller Form. Wie bei den bereits beschriebenen Web-Technologien, gelingt es auch mit JSP relativ leicht, mit einer Datenbank zu interagieren. Bevorzugt übernehmen sogenannte JavaBeans 55 diese Aufgabe, die über spezielle JSP-Anweisungen aufgerufen werden. In Listing 2.9 Zeile 5 wird das Bean JSPMySqlBean von Listing 2.10 instanziiert und erhält den speziellen Namen bean_test. Listing 2.9: Bean.jsp zeigt wie eine Bean-Komponente innerhalb einer JSP aufgerufen wird. 1 2 54 55 <HTML><HEAD> <TITLE>JSP and Java Beans</TITLE> Wird auch als JSP container bezeichnet. Eine wiederverwendbare Software-Komponente, die über ein Builder-Tool visuell manipuliert werden kann, siehe http://java.sun.com/beans. 56 2 WEB-APPLIKATIONEN 3 4 5 6 7 8 2.3 WEB-TECHNOLOGIEN </HEAD><BODY> <H1>Use a Java Bean to connect to a MySql DB</H1> <jsp:useBean id="bean_test" class="JSPMySqlBean" /> <%= bean_test.generateHtmlTable() %> </BODY> </HTML> Die Methode generateHtmlTable() des Beispiel-Beans (Listing 2.10), die in Zeile 6 (Listing 2.9) aufgerufen wird, baut mit den bereits bekannten Einstellungen über JDBC eine Verbindung mit einer MySQL-DB auf. Die Anweisungen zum Verbindungsaufbau und Ausführen einer Query am DB-Server sind ident mit den Beispielen des letzten Abschnittes, lediglich die Ausgabe hat sich dahingehend geändert, dass explizit HTMLCode beim Aufruf erzeugt und retourniert wird. Listing 2.10: Die Methode generateHtmlTable() der JSPMySqlBean Klasse liest Beispieldaten aus einer MySQL-DB aus und formatiert diese als HTML-Tabelle. 1 2 3 import java.sql.*; import java.net.URL; import java.io.Serializable; 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public class JSPMySqlBean implements Serializable { public static String generateHtmlTable() throws Exception { String url; Connection dbc; String html_string = new String("No Connection"); try { Class.forName ("org.gjt.mm.mysql.Driver"); url = "jdbc:mysql://www.amft.tu-graz.ac.at:3306/test"; dbc = DriverManager.getConnection(url, "test", "test"); String query = "select * from Products "; Statement statement = dbc.createStatement(); ResultSet resultSet = statement.executeQuery (query); html_string = "<TABLE BORDER=1>"; while (resultSet.next()) { html_string += "<TR><TD>"+resultSet.getString(1)+"</TD>"; html_string += "<TD>"+resultSet.getString(2)+"</TD></TR>\n"; } html_string += "</TABLE>"; 57 2 WEB-APPLIKATIONEN 23 } catch (Exception e) { System.out.println(e.toString()); } return html_string; 24 25 26 27 28 29 2.3 WEB-TECHNOLOGIEN } } Ausgehend von diesen und den bereits erwähnten Java-bezogenen Technologien, definiert SUN in [JServSpec2.2, 1999] eine Web-Applikation als ein Zusammenspiel folgender Elemente: • Java Servlets • Utility Classes • JavaServer Pages • HTML, DHTML, Images, Sound. • Java Applets • Beschreibende Meta-Information, die alle angeführten Elemente verknüpft. • JavaBeans Die Meta-Information der gesamten Web-Applikation wird in einem sogenannten Web Application Deployment Descriptor File (web.xml) gehalten, das entsprechend den XMLKonventionen mit dem folgenden DOCTYPE versehen ist: <!DOCTYPE webapp SYSTEM "http://java.sun.com/j2ee/dtds/web-app_1_2_.dtd" Nach Abschluß der Entwicklung werden alle Elemente – sprich Files – der Web-Applikation, mit dem Java Archive Tool (JAR) in ein WAR 56 File gepackt. Damit kann die gesamte Web-Applikation als ein einziges File auf einen anderen Server, der auch JSP und Java Servlets unterstützt, übertragen und zur Anwendung gebracht werden. In diesem Zusammenhang bezeichnet SUN den Server als Web Container, die JSP engine als JSP Container und die Servlet engine als Servlet Container. SUN bietet mit diesem Konzept eine sehr durchdachte Gesamtlösung für Web-Applikationen auf Java Basis. Es scheint, dass die teilweise sehr jungen“ Spezifikationen ” einzelner Java-Technologien auch langsam Reife erlangen. Eine ausgereifte Spezifikation ist Grundvoraussetzung neben Robustheit, Stabilität und Geschwindigkeit, möchte man 56 Web Archive 58 2 WEB-APPLIKATIONEN 2.3 WEB-TECHNOLOGIEN das Vertrauen der Web-Programmierer gewinnen. Diese greifen aber auch gerne auf alternative, sich im Trend befindliche offene Lösungen wie derzeit PHP zurück, das in punkto Datenbank-Handling der JSP-Technologie leicht Paroli bieten kann. Weitere Informationen: http://java.sun.com/products/jsp http://java.sun.com/products/jsp/whitepaper.html http://www.klomp.org/gnujsp http://jakarta.apache.org 59 3 Hyperwave Information Server The system should allow access to all kinds of information one can think of. (Multimedia Axiom)a . Req. G.1 a Hyper-G Specification of Requirements [Kappe, 1991]. Die Geschichte des Hyperwave Information Server – kurz HWIS – ist ein Beispiel, wie aus einem vielleicht visionär anmutenden wissenschaftlichen Kleinstprojekt eine eigenständige und gewinnbringende Unternehmung entstehen kann. Glaubt man jedoch den Angaben des Netcraft Server Surveys (siehe Tabelle 2.1) so leisten“ sich gerade einmal ” 719 Web-Sites einen HWIS. Leicht übersehen wird dabei, dass Netcraft nur die von außen sichtbaren HWIS in Betracht ziehen kann, die zahlreich hinter Firewalls verborgenen HWIS namhafter Firmen – Siemens, Porsche, Motorola, um nur einige zu nennen – fehlen natürlich im Server Survey. Hyperwave sieht aber gerade den verdeckten“ Bereich ” des Intranets als Kerngeschäft ihres Servers. Dieses Kapitel untersucht im Schwerpunkt den HWIS bezüglich seiner Tauglichkeit als Plattform für Web-Applikationen. Abschnitt 3.1 konzentriert sich auf die allgemeinen Eigenschaften des Servers, von den Leistungsmerkmalen beginnend über die Software-Architektur bis zu den Konfigurationsmöglichkeiten. Anschließend werden im Abschnitt 3.2 die Programmiermöglichkeiten des Servers näher betrachtet und auf ihre Leistungsfähigkeit hin untersucht. 60 3 HYPERWAVE INFORMATION SERVER 3.1 Grundlagen 3.1.1 Entstehung 3.1 GRUNDLAGEN Im Jahre 1989 begann ein kleines Team um Herman Maurer, Ivan Tomek und Fritz Huber des IICM (Institute for Information Processing and Computer Supported New Media) an der TU-Graz, Anforderungen an ein optimal large-scale Hypermedia System“ ” zu sammeln. Die konzeptionellen Schwächen der um diese Zeit vorherrschenden Informationssysteme wie WAIS 1 , Gopher 2 und das World Wide Web 3 sollten dabei beseitigt werden. Demgegenüber versuchte man, zukunftsweisende Ansätze wie aus Ted Nelson‘s Xanadu 4 zu übernehmen und auf eigene Weise umzusetzen. Unter dem Namen HyperG – das G“ steht für Graz – begann 1990 mit Unterstützung des österreichischen Mini” steriums für Wissenschaft und Kunst, die Entwicklung eines Prototypen. 1991 erstellte Frank Kappe ein erstes Architectural Design“ [Kappe, 1991] aus den gesammelten Re” quirements [Kappe et al., 1991] und implementierte bald darauf zusammen mit Gerald Pani den ersten Hyper-G Server und Client. Zum erstmaligen Einsatz in der Praxis kam der Hyper-G Server 1992 als Informationssystem der TU-Graz, besser bekannt als TUGinfo. Im gleichen Jahr adaptierte die European Space Agency (ESA) den Server für ein Guide and Directory“ System. Damit wurde der Hyper-G Server zur Produktreife ” herangeführt. 1993 wurde der Hyper-G Client für Windows (Amadeus) und 1994 der Hyper-G Client für Unix-Systeme (Harmony) entwickelt. Zum wissenschaftlichen gesellte sich zusehends auch der kommerzielle Erfolg von Hyper-G, der durch die Gründung einer AG und der damit verbundenen Namensänderung auf Hyperwave, Anfang 1997 sprichwörtlich gekrönt wurde. Zur Zeit ist die Version 5.1 des HWIS aktuell. Hyperwave beschäftigt derzeit über 100 Mitarbeiter5 , verfügt über Niederlassungen in Graz (Entwicklung), München, Genf, sowie Boston und zählt zu den Start-up“ Unter” nehmungen im IT-Bereich. Knowledge-Management und sogennante Informationsportale im Intranet werden zunehmend zum Kerngeschäft von Hyperwave. 1 Wide Area Information Server war eine reine Suchmaschine. Startete um 1989. Ein Campus-Informationssystem der University of Minnesota. Startete um 1991. 3 1989 war nicht sicher, ob sich das WWW-Konzept durchsetzen würde. 4 Siehe [Xanadu, 2000]: Project Xanadu was an explicit inspiration for Hyperwave.“ ” 5 Tendenz stark steigend. 2 61 3 HYPERWAVE INFORMATION SERVER 3.1.2 3.1 GRUNDLAGEN Design Ziele Aus den erwähnten Requirements für ein second generation Hypermedia System“ [Mau” rer, 1996] des letzten Abschnittes, wurden in abgekürzter Form die folgenden Design Ziele [Andrews et al., 1994] festgelegt: 1. Provide orientational and navigational aids. 2. Provide automatic structuring and maintenance. 3. Reduce fragmentation across servers. 4. Support user identification and access control. 5. Support multilinguality. 6. Maintain interoperability with existing systems. Unter der im letzten Punkt angeführten Interoperabilität ist die Möglichkeit gemeint, mit verschiedenen Protokollinstanzen kommunizieren zu können. Eine zurückblickend richtungsweisende Entscheidung, da man sich dadurch – um es bildlich zu formulieren – automatisch immer ins richtige Boot setzt, sprich das zur Zeit gängigste Protokoll leicht unterstützen kann6 . Zur damaligen Zeit sollten Gopher, WWW und Hyper-G Clients auf den Server zugreifen können. Das viel zitierte Lost in Hyperspace“ Syndrom, damit verbunden der berühmte Ser” ver Error-Code 404 und Begriffe wie Dangling Links“ und Orphans“, motivierte die ” ” Forderung nach automatischer Strukturierung eingefügter Dokumente. Nicht der User muss sich um die Validierung von Links in Dokumenten kümmern, sondern der Server hat diese Aufgabe automatisch zu erledigen. Bei der Anforderung eines Dokuments sollen dynamisch ergänzte Navigationshilfen die Orientierung im Informationsraum erleichtern. Diese aus den Requirements [Kappe et al., 1991] hervorgegangenen Design Ziele für ein Informationssystem korrelieren in immer stärkeren Maße mit den Anforderungen derzeitiger Web-Applikationen. User-Management, Multilingualität und Interoperabilität zählen oft zu den Kernaufgaben moderner Web-Applikationen. Ein Server, der für derartige Aufgaben bereits konzeptionell gerüstet ist, eignet sich daher bestens als Applikationsplattform. 6 Das sich HTTP als Standard durchsetzen würde, konnte Anfang der 90-Jahre noch niemand wissen. 62 3 HYPERWAVE INFORMATION SERVER 3.1.3 3.1 GRUNDLAGEN Features Die Design Ziele der frühen Anfänge des HWIS – siehe Abschnitt 3.1.2 – haben sich trotz des rasanten Siegeszuges“ des WWW nicht gravierend geändert. Einzig der Web” Browser (früher WWW-Browser) hat sich als Client7 für den HWIS durchgesetzt. Einer der Erfolgsfaktoren des HWIS ist die Flexibilität und Dynamik, mit der die Dokument-Struktur des Servers umgesetzt, sprich für das Ziel Interface Web-Browser adaptiert wird (Erstellung einens dynamischen HTML-Dokuments). Dazu werden die eingefügten Dokumente nicht auf herkömmliche Art statisch in einem File-Baum verwaltet – vergleiche Abschnitt 4, Apache HTTP Server – sondern dynamisch in einem sogenannten Object Repository, einer objekt-orientierten Datenbank. Das Struktur-Element Collection wird bei diesem Ansatz zur zentralen Verwaltungseinheit. Eine Collection ist vergleichbar mit einem Verzeichnis eines hierarchischen File-Systems, das weitere Files und Verzeichnisse enthalten kann. Analog kann eine Collection wieder weitere Dokumente und Collections beinhalten. Mit der vorgegebenen Root-Collection (Hyperwave Root Collection) wird eine Collection-Hierarchie erzeugt, die formal mathematisch gesprochen, einem gerichteten azyklischen Graph entspricht. Die vordefinierte Informationsarchitektur des HWIS zwingt auch indirekt den User, mit Disziplin und Ordnung seine Dokumente am Server zu verwalten. Der HWIS erzeugt dynamisch entsprechende HTML-Dokumente, um in der CollectionHierarchie via Web-Browser navigieren zu können (siehe Abbildung 3.1). Damit werden alle Objekte am Server – im übertragenen Sinn – automatisch verlinkt und bleiben stets in einem konsistenten Zustand. Orphane sind daher ausgeschlossen. In der folgenden Aufzählung werden die wichtigsten Features des Hyperwave Information Servers kurz erläutert. Für genauere Informationen über die Leistungsmerkmale des Servers sei auf [HwisUser, 1999] oder [Maurer, 1996] verwiesen. 1. Collection: Ist die zentrale“ Container-Klasse des HWIS. Diese Klasse leitet ” zusätzlich verschiedene Unterklassen mit spezialisierten Eigenschaften ab. Das Attribut CollectionType eines Container-Objekts entscheidet über den genauen Typ. In der Grundkonfiguration des HWIS sind vier Unterklassen vordefiniert: • Cluster: Kombiniert mehrere Objekte in einem Container. Diese Klasse findet sehr gerne in Web-Applikationen Anwendung. 7 Das W3C verwendet den allgemeineren Begriff User Agent. 63 3 HYPERWAVE INFORMATION SERVER 3.1 GRUNDLAGEN Abbildung 3.1: Hyperwave Collection-Hierarchie. • Sequence: Die Objekte einer Sequence werden automatisch sequentiell verlinkt. Die Reihenfolge ist abhängig vom Attribut Sequence des Objekts. • MultiCluster: Alle Elemente des MultiClusters werden zusammengestzt in einem Dokument dargestellt. • AlternativeCluster: Enthält zum Beispiel mehrere Dokumente mit gleichem Inhalt, aber verschiedenem Format (HTML, PDF, PS). Beim Request wird entsprechend den Benutzereinstellungen entschieden welches Dokument an den Client geschickt wird. 2. Attribute: Zu jedem Objekt am HWIS (Dokument, Collection, etc.) werden zusätzliche Metadaten (Attribute) in Form eines getrennten Objekts im Repository gespeichert. Man unterscheidet grundsätzlich vom System und vom User definierte Attribute. 3. Zugriffskontrolle: Jedes Objekt am HWIS besitzt definierte Zugriffsrechte, was das Lesen, Schreiben und Löschen betrifft. Ein hilfreiches Tool für die Verwaltung der Benutzungsrechte wird durch den integrierten Rights Wizard zur Verfügung 64 3 HYPERWAVE INFORMATION SERVER 3.1 GRUNDLAGEN gestellt. 4. Link Management: Die Konsistenz der Links wird automatisch vom Server gewährleistet. Links werden als eigene Objekte, getrennt von den Dokumenten im Repository gespeichert. Beim Einfügen eines Dokuments werden alle vorkommenden Links extrahiert und im Gegenzug – das Dokument wird angefordert – auch wieder dynamisch ins Dokument eingefügt. Source und Destination Anchor Objekte realisieren die geforderte Bidirektionalität. 5. User-Management: User und User-Gruppen werden in einem hierarchischem Schema verwaltet. Zum Beispiel können die Zugriffsrechte einer Gruppe auf einen bestimmten Bereich des Servers restringiert werden. 6. Session-Management: Jeder User kann individuell Einstellungen für das UserInterface treffen, etwa ob dieses in deutscher oder englischer Sprache gehalten sein soll. 7. Suche: Der HWIS ist mit einer integrierten Such-Funktionalität ausgestattet. Die Suche im Volltext oder den Metadaten der Objekte ist möglich, zudem kann sogar nach Links gesucht werden. Der Such-Bereich (Search Scope) kann individuell angepasst werden. 8. Online Publizieren: Kleine Dokumente können direkt über HTML-Formulare oder über die Publish“ Funktion des Web-Browsers (Netscape Navigator, Inter” net Explorer) eingefügt werden. Auf gleiche Art können Collections erzeugt und gelöscht, oder Attribute verändert werden. 9. Online Administration: Die Administration des HWIS kann ebenso über den Web-Browser erfolgen. Nach erfolgreicher Authentifizierung erlaubt das Tool WaveSetup die Konfiguration des Servers. Abbildung 3.2 zeigt einen Ausschnitt der vielfältig vorhandenen Konfigurationsmöglichkeiten. 10. Trennung von Inhalt und Darstellung: Layout und Navigation können zentral geändert und angepasst werden. Der User braucht sich um diese Belange nicht mehr zu kümmern. Ein Corporate Design ist wesentlich einfacher realisierbar. 11. Release Flow: Wird auch als Document-Staging bezeichnet. Ein Dokument durchläuft vor der endgültigen Publikation mehrere definierte Schritte und wird 65 3 HYPERWAVE INFORMATION SERVER 3.1 GRUNDLAGEN Abbildung 3.2: Online Administration des HWIS mittels WaveSetup. erst released“, wenn zum Beispiel ein Review von verschiedenen Personen durch” geführt wurde. Für weitere Informationen, siehe [HwisUser, 1999, Abs. 2.3.5.10] 12. Versionskontrolle: Der HWIS erlaubt die Versionierung von Dokumenten. Dazu müssen die Dokumente explizit eingecheckt werden. Zusätzliche Features wie Version History erleichtern die Verwaltung. Über sogenannte Configurations können ganze Collection-Hierarchien versioniert werden. Für weitere Informationen, siehe [HwisUser, 1999, Abs. 2.3.5.11]. 13. Diskussionsforum: Der HWIS erlaubt die Verwaltung von Newsgroups – meist thematisch verwandt – in einem sogenannten Diskussionsforum. Die Funktionalität ist vergleichbar mit Usenet Newsgroups. Für weitere Informationen, siehe [HwisUser, 1999, Abs. 2.5]. 14. Document Classes: Der HWIS bildet das objekt-orientierte Paradigma auf Dokumente am Server ab. Damit können Dokumente mit einem bestimmten Aussehen und erweiterter Funktionalität ausgestattet werden. Document Classes werden in Abschnitt 3.2.3 ausführlich behandelt. 66 3 HYPERWAVE INFORMATION SERVER 3.1 GRUNDLAGEN 15. Sicherheit: Der HWIS verfügt über ein ausgefeiltes Sicherheitsmodell. Einerseits kann die Zugriffsberechtigung jedes Dokuments explizit festgelegt werden (siehe Punkt 2), andererseits unterstützt der HWIS auch die moderne und verbreitete SSL-Verschlüsselungstechnik. Diese 15 Punkte lassen erkennen, dass der HWIS besonders für die effiziente Verwaltung von großen Informationsmengen konzipiert und getrimmt wurde. Eine Aufgabe, die in vielen Unternehmungen steigende Bedeutung findet. 3.1.4 Server Architektur Wie viele moderne Server-Systeme ist der Hyperwave Information Server kein monolithischer Block, der durch einen einzelnen Prozess realisiert wird. Schon 1994 (siehe Abbildung 3.3) setzten die Entwickler auf die Vorteile eines verteilten Systems und sahen für die verschiedenen Aufgaben unabhängige Module (eigene Prozesse) vor. Diese kommunizieren über Internet Sockets miteinander und werden von einem Kontrollprozess (hwservercontrol) gestartet und überwacht. Das erhöht die Flexibilität, Skalierbarkeit und Performance des Systems und verspricht auch erhebliche Wartungsvorteile. Abbildung 3.3: Server Architektur anno 1994. Quelle: [Andrews et al., 1994]. Die verschiedenen Module können jeweils einer bestimmten Schicht (Layer) des HWIS 67 3 HYPERWAVE INFORMATION SERVER 3.1 GRUNDLAGEN zugeordnet werden. Prinzipiell wird der Server in 3 Schichten unterteilt (vergleiche dazu Abbildung 3.4): 1. Protocol Conversion Layer: Diese Schicht macht aus dem HWIS einen multiprotokoll Server. Sogennante Gateways transformieren verschiedene Protokolle8 in das serverspezifische HG-CSP9 . Als WaveMaster wird das WWW-Gateway bezeichnet. 2. Session Layer: In dieser Schicht werden die Anfragen der einzelnen Gateways koordiniert und auf die Sever-Prozesse der Database Layer aufgeteilt. Für jede Client-Verbindung wird ein eigener leichtgewichtiger Prozess erzeugt, der erst beim Abbruch der Verbindung beendet wird. 3. Database Layer: Hier erfolgt die eigentliche Verwaltung der gespeicherten Objekte. In dieser Schicht befinden sich die drei folgenden Server: Object Server, Full Text Server und Document Cache Server. Bezugnehmend auf Abbildung 3.4 können diesen Schichten konkrete Prozesse zugeordnet werden. Im Folgenden werden die Aufgaben dieser Prozesse einzeln kurz bschrieben: 1. Protocol Conversion Layer: • wavemaster: Ist das Front-End“ des ganzen Systems. Generiert dynamisch ” HTML-Seiten, die an den Web-Browser geschickt werden. Enthält in Form von Templates und Dokument-Klassen die Logik der Applikation. Zusätzlich sind die benötigten PLACE und JavaScript Interpreter in diesem Modul integriert. • waveslave: Bildet zusammen mit dem wavemaster einen Application Server. Die Instanzen des Application Servers können auf verschiedenen Rechnern disloziiert sein. Eine angenehme Eigenschaft für die Applikations-Entwicklung. 2. Session Layer: 8 9 Früher HTTP, Gopher und SNMP jetzt nur mehr HTTP. Hyper-G Client Server Protocol ist ein verbindungsorientiertes (connection-oriented ) Protokoll mit der well-known“ Port-Nummer 418 (RFC 1700 [Reynolds & Postel, 1994]). ” 68 3 HYPERWAVE INFORMATION SERVER 3.1 GRUNDLAGEN Abbildung 3.4: Server Architektur anno 1999. Quelle: [Kappe, 1999]. • hgserver: Ein leichtgewichtiger“ Koordinator-Prozess, der für jede Verbin” dung extra erzeugt wird. Bei Beginn werden Paramater für die Kommunikation ausgehandelt, wie zum Beispiel Identifizierungsdaten. Dieser Prozess verhält sich als Client zu den Prozessen der Database Layer. 3. Database Layer: • wavestore: Ist der eigentliche Object Server. Die Objekte werden in einer multi-user, read-write Datenbank verwaltet. Die native“ Datenbank des ” HWIS kann auch durch eine Oracle-DB ersetzt werden. • dcserver: Steht für Document Cache Server “. Hier werden die eigentlichen ” Dokumente des HWIS gehalten. Entweder liefert dieser Server dem Client angeforderte Dokumente oder akzeptiert das Speichern übertragener Dokumente. • ftserver: Steht für Full Text Server“. Dieser Server verwaltet Indizes von ” Wort-Listen. Beim Einfügen eines neuen Dokuments werden automatisch indizierte Attribute in diese Datenstruktur aufgenommen. Bei einer Suche liefert dieser Server bereits eine gereihte Liste von Treffern. 69 3 HYPERWAVE INFORMATION SERVER 3.1 GRUNDLAGEN Für eine ausführlichere Beschreibung der Architektur und Prozess-Struktur sei auf [HwisProg, 1999] verwiesen. 3.1.5 Unterstützte Plattformen Derzeit ist der Hyperwave Information Server für Windows NT 4.0 und zahlreiche UnixPlattformen verfügbar. Folgende Unix-Derivate werden unterstützt: • DEC UNIX 4.0 • Linux 2.x • HP-UX 10.20 • SNI Reliant UNIX 5.43 • IBM AIX 4.3 • SUN Solaris 2.5.1 3.1.6 Installation Unter Windows NT führt ein grafisches Setup-Programm durch die Installation des HWIS und der mitgelieferten Add-Ons“. Die Installatiosprozedur gestaltet sich dabei ” in der für Windows gewohnten Art und Weise. Zu den Add-Ons“ zählen: ” 1. Hyperwave Publishing Wizard 2. ODMA10 Support 3. Hyperwave Virtual Folders 4. Hyperwave Office Extensions Für die Installation unter UNIX muss ein eigener User-Account mit dem empfohlenen Namen hwsystem und einer C-Shell eingerichtet werden. Darauf startet man einfach unter dem User hwsystem das Perl-Skript install von der Installations-CD, das durch die einzelnen Schritte der Installation führt. Sowohl für Windows NT und UNIX ist das Installationsprozedere in eigenen Guides detailliert erklärt. Siehe dazu [HwisNtInstall, 1999] und [HwisUnInstall, 1999]. 10 Open Document Management API. 70 3 HYPERWAVE INFORMATION SERVER 3.1.7 3.1 GRUNDLAGEN Konfiguration Die Konfiguration wesentlicher Parameter des HWIS kann wie in Abbildung 3.2 dargestellt, über das Programm WaveSetup direkt im Web-Browser erfolgen. Größere Kontrolle über den Server erhält man dennoch nur durch direktes Editieren des HauptKonfigurationsfiles .db.contr.rc, das mit seinen Grundeinstellungen wie folgt aussieht: Listing 3.1: .db.contr.rc Grundkonfiguration 1 2 3 4 5 6 7 8 9 10 11 12 # @(#)[HyperWave] [HGC-T] db.contr.rc 2.02 [server configuration file] [Gerald Pani] MAIN::DATABASE = NATIVE MAIN::PROCESS = WAVEMASTER WAVEMASTER::PORT = 81 WAVEMASTER::ERRORS = log/wave-err.log WAVEMASTER::LOG = log/wave.log WAVEMASTER::COMMAND = wavemaster -scope WAVEMASTER WAVEMASTER::USER_PLACE_TEMPLATES = true MAIN::PROCESS = WAVENOTIFY WAVENOTIFY::COMMAND = wavenotify WAVENOTIFY::LOG = log/notify.log 13 14 15 16 17 18 # database nice factors WAVESTORE::NICE_FACTOR = 3.0 WAVEORACLE::NICE_FACTOR = 3.0 ENVIRONMENT::DIRdbs = $HOME/wavestore WAVESETUP::PORT = 9999 Die Bedeutung der meisten Einstellungen geht bereits aus den Namen hervor, wie etwa das Port des Wavemasters, das in der Beispielkonfiguration in Listing 3.1 auf 81 gesetzt wurde, um nicht mit einem parallel laufenden Apache HTTP Server zu kollidieren. In der Entwicklungsphase startet man fast immer einen Wavemaster-Prozess lokal auf seinem Rechner oder unter seinem eigenen Account und entwickelt an diesen Templates. Dazu müssen die Wavemaster-Einstellungen im .db.contr.rc entsprechend angepasst werden, etwa zu: WAVEMASTER::HOSTNAME = lisa.tu-graz.ac.at WAVEMASTER::DIR = $HOME/wavemaster WAVEMASTER::LOG_COMMON = $HOME/log/wave.log 71 3 HYPERWAVE INFORMATION SERVER 3.2 PROGRAMMIERUNG Für eine vollständige Liste der möglichen Konfigurationsparameter siehe Hyperwave Administrators Guide [HwisAdmin, 1999, Abs. 2]. 3.2 Programmierung Wie in Abschnitt 3.1.3 bereits erwähnt, trennt der HWIS strikt die Darstellung eines Dokuments von seinem Inhalt. Die äußere Erscheinung – oder besser das Layout – eines Dokuments kann dadurch individuell den gewünschten Anforderungen (typisches Beispiel wäre eine Corporate Design) angepasst werden. Der HWIS realisiert diese Trennung von Inhalt und Darstellung über sogenannte Templates. Ein Template ist ein File, das aus PLACE (siehe Abschnitt 3.2.1) und JavaScript (siehe Abschnitt 3.2.2) Anweisungen, sowie aus HTML-Tags besteht und bei einem Client-Request vom HWIS abgearbei” tet“ wird. Als Resultat wird ein dynamisch erzeugtes HTML-Dokument an den Client gesendet. Die beschriebene Funktionalität steckt im wavemaster Modul des HWIS, etwas exakter in den Files des wavemaster Verzeichnisses der HWIS-Installation. Das Haupt-Template des HWIS wird als master.html bezeichnet und ist der Startpunkt aller Client-Requests. Für eine genaue Beschreibung des HWIS Template-Mechanismus sei auf Abschnitt 1 des PLACE Workshops [HwisPlaceWS, 1999] verwiesen. Web-Applikationen auf Basis des HWIS adaptieren primär die vorgefertigten Templates nach ihren Bedürfnissen und greifen dabei indirekt über PLACE und JavaScript auf das API des HWIS zurück. Abschnitt 3.2.1 stellt kurz die ältere Variante der TemplateProgrammierung über die proprietäre Meta-Sprache PLACE vor. Abschnitt 3.2.2 erklärt die modernere Form der Programmierung mittels server-seitigem JavaScript (SSJS). Abschnitt 3.2.3 beschäftigt sich abschließend mit dem völlig neuartigem Konzept sogenannter Document Classes, die mit der Version 5.0 des HWIS eingeführt wurden. 3.2.1 PLACE Der Name PLACE leitet sich von den in der Sprache vorkommenden Platzhaltern (engl. Placeholders) ab. PLACE besteht in der Tat aus einer Unmenge von Platzhaltern, die ihrerseits bestimmte Teilinformationen von Server-Objekten repräsentieren. Sobald man auf ein bestimmtes Objekt am Server zugreift, verarbeitet der Wavemaster ein definiertes PLACE Template und liefert als Ergebnis ein HTML-Dokument. PLACE Templates bestehen aus HTML und PLACE Anweisungen, dabei beginnt und endet jedes PLACE 72 3 HYPERWAVE INFORMATION SERVER 3.2 PROGRAMMIERUNG Statement mit zwei Prozentzeichen (%%), zum Beispiel: %%# So sieht ein Kommentar in PLACE aus %% PLACE unterstützt dabei zahlreiche gewohnte Konstrukte einer Programmiersprache. Dennoch muss an dieser Stelle betont werden, dass PLACE in einigen Bereichen deutliche Einschränkungen gegenüber einer herkömmlichen Programmiersprache besitzt: 1. PLACE ist keineswegs objekt-orientiert, obwohl die Notation sehr häufig den Anschein erweckt (zum Beispiel: %%object.title%%). 2. Der fundamentale Zuweisungsoperator fehlt gänzlich. Es ist also nicht möglich eigene Variablen zu definieren. 3. Arithmetische Operationen können nicht ausgeführt werden. Die damit limitierte Funktionalität von PLACE entspricht aber dem eigentlichen Zweck der Sprache, nämlich schnell und mit einfachen Mitteln11 das standardmäßige UserInterface zu verändern. Dementsprechend sind nun die Sprachkonstrukte und Features von PLACE gestaltet: • Programmflusskontrolle: Der Programmfluss kann über if“ oder while“ An” ” weisungen kontrolliert werden. PLACE unterstützt die gewohnten Vergleichsoperatoren für Ausdrücke, die über UND (&&), ODER(||) und NICHT (!) verknüpft werden können. Beispiel eines einfachen if“-Blocks: ” %%if object.title == "Test"%% Das ist EIN Test Objekt! %%else%% Das ist KEIN Test Objekt! %%endif%% Beispiel eines einfachen while“-Blocks: ” %%while coll.next_entry%% %%# Ausfuehrungsblock %% %%endwhile%% 11 Sofern die Anzahl von über 600 Placeholders nicht schon wieder gegenteiliges bewirkt. 73 3 HYPERWAVE INFORMATION SERVER 3.2 PROGRAMMIERUNG • Strukturierung: Üblicherweise erreichen Template Files sehr schnell eine unübersichtliche Größe, die eine Aufsplittung auf mehrere Files unabdingbar macht. Dazu kann man in PLACE einerseits relativ zum wavemaster Verzeichnis ein File über %%include "file_name"%% einbinden, oder direkt ein Objekt vom Server über %%hyperinclude "GOID_or_name"%% an die Stelle der Inlcude-Anweisung substituieren. Dennoch sollte man den Einsatz eines Inlcudes immer sorgfältig abwägen, da bei Includes über mehrere Ebenen12 sehr schnell der Überblick verloren gehen kann. • Makros: Neben der Aufteilung der Templates auf mehrere Files, erlaubt PLACE die Deklaration von Makros, die über ihren Namen aufgerufen werden können. Ein Beispiel eines einfachen Footer-Makros für eine HTML-Seite: %%macro my_footer%% <hr noshade> Georg Wurzenberger | <a href="mailto:[email protected]">[email protected]</a> %%endmacro%% Über %%my_footer%% kann dieses Makro aufgerufen werden. • Placeholder: PLACE definiert sich über die Fülle vorhandener Placeholder, die für die verschiedensten Aufgabenbereiche ausgelegt sind. Zum Beispiel werden logisch zusammengehörige Teile eines HTML-Dokuments gewissen Placeholders zugeteilt, wie etwa der Doctype des HTML-Dokuments dem Placeholder object.html.doctype oder der Teil zwischen den BODY-Tags dem Placeholder object.content. Für die Manipulation der Collection-Ausgabe gibt es ein Set von Placeholders die mit dem Präfix coll.“ beginnen, wie für den Titel eines Objekts ” der Collection (coll.entry.title). Für Sequence- und Cluster-Objekte gibt es bezüglich der Semantik ganz ähnliche Placehoder. 12 Ein inkludiertes File enthält wieder Include-Anweisungen und so weiter. 74 3 HYPERWAVE INFORMATION SERVER 3.2 PROGRAMMIERUNG Ein Objekt am Server wird immer mit zusätzlichen Attributen gespeichert, die über eine While-Schleife in PLACE ausgelesen werden können. Der Placeholder object.attributes.entry.key repräsentiert dabei den Namen eines bestimmten Attributes, object.attributes.entry.value den korrespondierenden Wert. Die für das Session-Management relevanten Placeholders beginnen mit dem Präfix session.“, wie zum Beispiel session.username oder session.language. In” formationen über den Client werden in Placeholders mit dem Präfix client.“ ” gehalten, wie etwa die IP-Adresse in client.ipadr. Schließlich gibt es noch Placeholder um Attribute zu verändern, Objekte zu kopieren, zu bewegen oder zu löschen und auch für die Versionskontrolle und Annotation. Die über 600 vorhandenen Placeholder werden in dem alleine 360 Seiten starken Hyperwave PLACE Workshop [HwisPlaceWS, 1999] mit den dazugehörigen Makros beschrieben. • Actions: Eine besondere Form der Placeholder bilden sogenannte Actions. Über Actions wird der HWIS aufgefordert, Aktionen auszuführen und im gegengesetzten Fall kann eruiert werden, welche Aktionen vom Server durchgeführt wurden. Wie bei vielen anderen proprietären Meta-Sprachen bedarf es einiger Zeit, um sich mit der Programmierung von PLACE Templates vertraut zu machen. Der Umstand, dass dabei ein einziges Template aus einer Mischung verschiedener Elemente wie etwa PLACE, HTML oder SSJS Anweisungen bestehen kann, scheint sehr gewöhnungsbedürftig. 3.2.2 JavaScript Object Model Seit der Version 4.0 des HWIS findet JavaScript vermehrt Anwendung in den Templates des Wavemasters. JavaScript soll dabei primär als Ergänzung und Erweiterung von PLACE verstanden werden und nicht als Alternative. Die Funktionalität von JavaScript auf der Server-Seite wurde bereits in Verbindung mit dem Netscape (iPlanet) Server in Abschnitt 2.3.5 erörtert. Der Hyperwave JavaScript-Interpreter und die dazugehörige Runtime Engine unterstützen ebenfalls Core JavaScript“ und zusätzliche Objekte, die sich vom sprach” unabhängigen Hyperwave API ableiten. Zusammen bilden die JavaScript Objekte des HWIS, das Hyperwave JavaScript Object Model. Das Objekt-Modell erweist sich dabei als sehr mächtig, da die gesamte Funktionalität, die über das User-Interface verfügbar 75 3 HYPERWAVE INFORMATION SERVER 3.2 PROGRAMMIERUNG ist, auch in einzelnen Methoden der JavaScript Objekte zu finden ist. Tabelle 3.1 listet die JavaScript Objekte des HWIS mit kurzer Beschreibung auf. Die Programmierung der Templates und damit indirekt die Verwirklichung von WebApplikationen, gestaltet sich über das JavaScript Objekt-Modell des HWIS wesentlich komfortabler und angenehmer als über eine adäquate Litanei“ von Placeholders. Zu” dem ist JavaScript in enger syntaktischer Verwandtschaft mit Java und C++, was den damit vertrauten Programmierer schnell in JavaScript Fuß fassen läßt. Eine Web-Applikation auf Basis des HWIS und seines JavaScript API ist in Abschnitt 5 detailliert beschrieben. Die genaue Referenz aller JavaScript Klassen des HWIS kann im Hyperwave Programmer’s Guide [HwisProg, 1999, Abs. 2] gefunden werden. 3.2.3 Document Classes Mit der Einführung sogenannter Document Classes versucht Hyperwave die Entwicklung von Applikationen am Server zu erleichtern. Dieser Abschnitt möchte das Konzept von Dokument-Klassen in den wesentlichen Zügen erklären und vertieft sich dabei weniger in technische Details, die ohnehin in [HwisProg, 1999, Abs. 4] nachgelesen werden können. Dokument-Klassen sind eine spezielle Erweiterung der existierenden Dokument-Typen des HWIS, wie Document, Collection, Sequence oder Cluster. Nicht immer findet man mit den vorgegebenen Typen das Auslangen, vor allem wenn es um speziellere Anforderungen geht, wie sie gewöhnlich in Web-Applikationen auftreten. In einem Support Tracking System genügt es zum Beispiel nicht, ein Trouble Ticket 13 durch einen einfachen Cluster darzustellen, da bereits beim Einfügen eines neuen Tickets eigens angepasste Formulare benötigt werden. An diesem Punkt beginnt das Konzept der Dokument-Klassen zu greifen. Durch die Erzeugung einer neuen Dokument-Klasse am HWIS wird gleichzeitig ein neuer Dokument-Typ generiert, der den vorgegebenen Anforderungen auf Punkt entsprechen kann. Die neu definierten Dokument-Klassen werden ebenfalls in einer Collection-Hierarchie am Server gespeichert, wobei die Collection mit dem Namen hw_documentclasses als Wurzel fungiert. Abbildung 3.5 zeigt die Hierarchie von Dokument-Klassen eines TestServers. Über speziell festgelegte Attribute – alle mit dem Präfix HW_DC_“ – wird ei” 13 Beinhaltet verschiedenste Informationen zu einem Problem, wie E-Mails, diverse Files, Status des Tickets, Bearbeiter und einiges mehr. 76 3 HYPERWAVE INFORMATION SERVER 3.2 PROGRAMMIERUNG Tabelle 3.1: JavaScript Klassen oder Objekte des HWIS mit kurzer Beschreibung der Funktionalität. Klasse/Objekt HW_API_Attribute HW_API_Object HW_API_ObjectArray HW_API_Reason HW_API_Error HW_API_Content HW_API_Server KeyValue KeyValueField OptionParser SendMail File Directory server request response wavemaster client a Beschreibung Ein Key-Value(s)“ Paar eines HW_API_Object. ” Enthält mehrere HW_API_Attribut Objekte. Enthält ein Feld (evt. sortiert) von HW_API_Object Instanzen. Repräsentiert eine Warnung oder eine Fehlermeldung. Kann mehrere HW_API_Reason Objekte enthalten. Kapselt eine Menge unbestimmter Daten, die in einem Zusammenhang stehen. Zum Beispiel ein Stück Text. Die mächtigste Klasse. Besitzt etwa 45 Methoden für die Manipulation von Objekten am Server. Hält ein Key-Value(s)“ Paar. ” Besteht aus KeyValue Objekten. Kann in hwjsa Programmen verwendet werden, um Kommandozeilen-Optionen zu parsen. Mit dieser Klasse können Mails verschickt werden. Dient zur Manipulation von Files. Dient zur Manipulation ganzer Verzeichnissse. Eine Instanz der HW_API_Server Klasse. Ein globales Objekt, das bei jedem Aufruf generiert wird und Informationen über den Client enthält, wie dessen IP Adresse. Dieses Objekt hält den HTTP-Header, der als Antwort zurück geschickt wird. Ein globales Objekt, das einige allgemeine Informationen über den Server kapselt. Enthält Informationen, die in Form eines Cooky beim Client gespeichert werden und beim nächsten Request wieder zum Server gelangen. Ein Tool des HWIS, mit dem JavaScript-Programme in der Kommandozeile getestet werden können. 77 3 HYPERWAVE INFORMATION SERVER 3.2 PROGRAMMIERUNG Abbildung 3.5: Hierarchie der Document Classes am HWIS. ne gewöhnliche Collection als Dokument-Klasse am Server deklariert. Das Attribut HW_DC_ClassName legt zum Beispiel den genauen Namen der Klasse fest. Vergleichbar mit Klassen in der objektorientierten Programmierung können Dokument-Klassen aus den folgenden Elementen bestehen: • Members: Sind Eigenschaften der Objekte einer Klasse. Der HWIS unterscheidet dabei zwei Arten von Members: – Attribute Members: Entsprechen den bekannten Attributen von Objekten des HWIS und werden über den Attributnamen HW_DC_Member festgelegt. Zum Beispiel wird in einem Adressbucheintrag der Vorname benötigt, der als Attribut der Klasse in der folgenden Weise festgelegt wird: HW_DC_Member:(Type:string)(Name:firstname)(Access:public) (Caption:(en:"First Name")(ge:"Vorname")) – Pointer Members: Vom Namen abgeleitet handelt es sich dabei um Referenzen auf andere Objekte des Servers. Zum Beispiel kann ein Adressbucheintrag mit zusätzlicher Information versehen werden, die in einem eigenen Objekt gewartet wird: HW_DC_Member:(Type:HW_DC_API_Pointer)(Name:additionalinfo) 78 3 HYPERWAVE INFORMATION SERVER 3.2 PROGRAMMIERUNG • Methods: Sind Funktionen, die das Verhalten der Dokument-Klasse bestimmen, wie etwa deren Darstellung. Sie können dabei auf die Daten aller Members ungehindert zugreifen. Eine Methode wird ebenfalls als Objekt mit speziellen Attributen in der Collection“ der Dokument-Klasse angelegt. Abbildung 3.6 zeigt ” Abbildung 3.6: Die Methoden der Dokument-Klasse email“. ” die Methoden der Dokument-Klasse email“ in der Darstellung des Web-Browsers. ” Die Methode send“ der Klasse email“ wurde dabei mit den folgenden Attributen ” ” versehen: DocumentType:Generic MimeType: application/vnd.hyperwave-method[-js] HW_DC_MethodName:send HW_DC_Access:public HW_DC_Caption:(en:"Send an email")(ge:"Schicke ein E-Mail") HW_ExecutionContext:core HW_ExecutionLanguage:JavaSCript HW_ExecutionLanguageVersion: 1.4 HW_ExecutionParameter:(Type:string)(Name:subject)(inOut:in) HW_ExecutionParameter:(Type:string)(Name:text)(inOut:in) Das Attribut MimeType“ bezeichnet die Sprache der Methode, in diesem Fall Ja” vaScript. In der weiteren Entwicklung des Servers sollen Methoden auch in anderen 79 3 HYPERWAVE INFORMATION SERVER 3.2 PROGRAMMIERUNG Programmiersprachen ausführbar sein. Über das Attribut HW_ExecutionContext“ ” wird der Ausführungskontext der Methode festgelegt, der wm“ für WaveMaster, ” vf“ für Virtual Folders oder core“ für WaveMaster und Virtual Folders sein ” ” kann. Damit können Methoden für ein spezielles User-Interface ausgelegt werden. Über HW_ExecutionParameter“ können einzelne Parameter der Methode festge” legt werden. Über die Variable inOut“ wird der konkrete Typ des Parameters ” definiert. Der eigentliche Unterschied zu Klassen in der objektorientierten Welt liegt in der Persistenz. Instanzen von Dokument-Klassen sind nach der Erzeugung physikalisch am Server gespeichert, hingegen sind Instanzen von objektorientierten Programmen meist14 nur währen der Laufzeit im Speicher. Daher beherrschen Dokument-Klassen noch weitere typische Eigenschaften objektorientierter Sprachen: • Kapselung von Daten • Destruktoren • Vererbung • Statische Methoden • Konstruktoren • Überladen von Methoden Da sich die deklarierten Dokument-Klassen automatisch in das bekannte User-Interface integrieren – im Punkt Publish“ der Menüleiste scheinen auch die Namen der Dokument” Klassen auf – lassen sich daraus sehr bequem neue Instanzen am Server anlegen. Hyperwave erfüllt mit der Einführung von Dokument-Klassen einen lange gehegten Wunsch der Programmierer, nämlich mit einem neuen Programmierkonzept flexibler und schneller Web-Applikationen auf Basis des HWIS realisieren zu können. Zweifelhaft ist nur, ob der Programmierer auch entsprechend schnell die notwendige Fingerfertigkeit mit dieser neuen Technik erlangen kann, zumal das für Dokument-Klassen von Hyperwave vorausgesetzte Wissen15 nicht gerade klein ist. 14 15 In Java können Objekte serialisiert gespeichert und wieder hergestellt werden. Objektorientiertes Programmieren, C++ oder Java, JavaScript und das Hyperwave API. Siehe [HwisProg, 1999, Abs. 4]. 80 4 Apache HTTP Server Good programmers know what to write. Great ones know what to rewrite (and reuse)a . Eric S. Raymond a The Cathedral and the Bazaar [Raymond, 1999, Kap. 2]. Der Apache HTTP Server – kurz Apache – ist eines der Aushängeschilder der OpenSource Community. Sein Marktanteil von bald 60 Prozent (siehe Abbildung 2.1 auf Seite 23) macht ihn zum unangefochtenen Leader unter den Web-Servern. Nach grundlegenden Betrachtungen in Abschnitt 4.1, konzentriert sich dieses Kapitel in Abschnitt 4.2 schwerpunktmäßig auf die für Web-Applikationen interessanten Module des Apache. Dabei werden Aspekte der Konfiguration und des praktischen Einsatzes der jeweiligen Module ausführlich beschrieben und fallweise durch theoretische Hintergrundinformation ergänzt. 4.1 Grundlagen Das Apache Server Project, das sich um die Entwicklung des Apache HTTP Servers kümmert, ist eines von mehreren Projekten der Apache Software Foundation, kurz ASF1 . Die erst im Juni 1999 in Delaware (USA) gegründete Institution, die sich selbst als not” for-profit corporation“ bezeichnet, ist aus der im Jahr 1995 entstandenen und weitaus bakannteren Apache Group hervorgegangen. Alle Projekte des ASF – zur Zeit acht an der Zahl – gründen auf den Prinzipien der freien, kollaborativen Software-Entwicklung, 1 http://www.apache.org 81 4 APACHE HTTP SERVER 4.1 GRUNDLAGEN verwenden das Internet zur Kommunikation und leben vom Geist des open-source“ Pa” radigmas. Das bekannteste mit dem Apache Brand“ versehene Produkt ist der Apache ” HTTP Server, der üblicherweise vereinfachend nur Apache“ oder Apache Server“ ge” ” nannt wird. Die folgenden Abschnitte beschäftigen sich mit einigen allgemeinen, aber hauptsächlich technischen Details des Apache Servers. 4.1.1 Ziele des Apache Server Project Das Ziel des Projekts ist die Realisierung eines sicheren, effizienten und erweiterbaren HTTP Servers, der die aktuellen und gültigen HTTP – derzeit HTTP/1.12 – Standards implementiert. 4.1.2 Entstehung Der im Jahre 1995 meistgenutzte Web-Server im Internet war der durch Rob McCool entwickelte NCSA3 Server. Nachdem McCool bereits Mitte 1994 NCSA verlassen hatte kam die weitere Entwicklung zum Erliegen und viele Webmaster, die bis dato die Version 1.3 des NCSA Servers benutzten, begannen den Server in eigener Regie zu patchen“. ” Zur Kommunikation unter diesen Webmastern wurde von Brian Behlendorf and Cliff Skolnick eine Mailing Liste und ein Rechner zur gemeinsamen Entwicklung eingerichtet. Die Apache Group mit acht Core Contributors war geboren. Aus dem gepatchten“ ” Server – im Englischen a patchy server“ – entstand auch die Bezeichnung Apache. ” Nun erfolgte die Entwicklung Schlag auf Schlag. Im April 1995 erfolgte die erste öffentliche Release (Version O.62) und bereits im Dezember 1995 war Apache 1.0 mit neuem Modul-Konzept, API, verbesserter Dokumentation und weiteren Erneuerungen verfügbar. Im selben Zeitraum löste Apache den NCSA Web-Server von der Spitze der benutzten Server Software ab [Siehe Abschnitt 2.2.1]. Apache 2.0a2 Alpha ist die derzeit letzte Version des Servers. 4.1.3 Unterstützte Plattformen Der Apache Server läuft auf nahezu allen Unix-Derivaten4 . Zu den bekanntesten kommerziellen Unix Betriebssystemen zählen Digital Unix, Solaris 2 und Irix. Linux, als 2 RFC 2616 [Fielding et al., 1999] National Center of Super Computing. http://www.ncsa.uiuc.edu. 4 siehe [Eilebrecht, 1999, Kap. 3.2] für eine genauere Liste. 3 82 4 APACHE HTTP SERVER 4.1 GRUNDLAGEN frei erhältliche Alternative, wird ebenso unterstützt. Im Windows Bereich wird primär Windows NT 4.0 (Service Pack 3) unterstützt, die Versionen für Windows 95/98 werden weniger gepflegt. Versionen für OS/2 und sogar AmigaOS sind erhältlich. 4.1.4 Installation Unter der Adresse http://www.apache.org/dist kann immer die aktuellste Version des Apache HTTP Servers, entweder als Source-Tarball oder als Binary-Distribution, unter der Apache License 5 frei bezogen werden. Rein für das experimentelle“ Kennlernen des ” Servers reicht die Installation der entsprechenden Binary-Version für seine Plattform. Will man jedoch den Server besser an seine Bedürfnisse anpassen so kommt man an der Übersetzung des Quellcodes nicht vorbei, vorausgestzt ein C-Compiler ist vorhanden. Das Entpacken des Apache-Archives erzeugt eine Reihe von Unterverzeichnissen. Das wichtigste davon ist das src Verzeichnis, das alle Source-Dateien des Apache und seiner Module, sowie Konfigurations-Files enthält. Welche Module nun wie in den Apache integriert werden sollen, kann in der Datei Configuration festgelegt werden. Die folgende Anweisung binded das Modul mod_env“ – ermöglicht die Verwendung von Umgebungs” variable des Servers in CGI-Skripte oder SSI-Dokumente – in den Apache Server ein. AddModule modules/standard/mod_env.o Grundsätzlich ist es ratsam, sich vorher genau zu überlegen, welche Module wirklich benötigt werden. Einige Module brauchen auch ohne direkte Verwendung Resourcen und können somit den ganzen Server verlangsamen. Das in Abschnitt 4.2 erklärte Konzept von Dynamic Shared Objects, stellt eine Alternative zum statischen Einbinden von Modulen dar und findet aufgrund der Einfachheit immer mehr Anklang. Der Aufruf des Shell-Skripts Configure erstellt entsprechend der im Configuaration File getätigten Angaben ein Makefile, das via make den gewünschten HTTP-Daemon6 (httpd) erzeugt. Abschließend kopiert man httpd an die entsprechende Stelle des Verzeichnisbaumes (zum Beispiel /usr/sbin) und erstellt ein Boot-Skript, damit der WebServer beim Hochfahren automatisch gestartet wird. 5 6 http://www.apache.org/LICENSE.txt Ein Prozeß der im Hintergrund läuft und gewisse Aufgaben periodisch oder auf Anfrage erledigt. 83 4 APACHE HTTP SERVER 4.1.5 4.1 GRUNDLAGEN Konfiguration Alle Konfigurationsanweisungen – diese werden auch als Direktiven bezeichnet – befinden sich in der Datei httpd.conf, die beim Start des Servers automatisch gelesen wird. Die Anhänger von grafischen Benutzer-Oberflächen schrecken vor dem Editieren einer reinen Text-Datei in den meisten Fällen zurück, in der Unix-Welt ist dieser Zugang aber der üblichere und effizientere. Listing 4.1 zeigt Ausschnitte aus der Konfiguration eines im Betrieb befindlichen Web-Servers (www.amft.tu-graz.ac.at) und kommentiert die Funktion einiger Anweisungen. Listing 4.1: Ausschnitte aus einem httpd.conf File 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ServerRoot "/usr/local/httpd" MinSpareServers 5 #min. number of idle child server processes. MaxSpareServers 10 #max. number of idle child server processes. StartServers 5 #number of child server processes created on startup. MaxClients 150 #max. number of simultaneous requests LoadModule mime_module /usr/lib/apache/mod_mime.so AddModule mod_mime.c Port 80 ServerAdmin [email protected] ServerName www.amft.tu-graz.ac.at DocumentRoot "/usr/local/httpd/htdocs" ErrorLog /var/log/httpd.error_log ServerSignature On ## Accesss to ’intra’ only from the AMFT-Intranet <Directory "/usr/local/httpd/htdocs/intra"> Options FollowSymLinks Includes Order allow,deny Allow from 129.27.114 </Directory> ## enable perl for cgi-bin <Location /cgi-bin> AddHandler perl-script .pl PerlHandler Apache::Registry PerlSendHeader On Options +ExecCGI </Location> 84 4 APACHE HTTP SERVER 27 28 29 30 31 32 4.2 MODULE ## To use server-parsed HTML files AddType text/html .shtml ## To use PHP files AddType application/x-httpd-php3 .php3 ## Customizable error response (AMFT) ErrorDocument 401 /resources/error_docs/error401.html Die meisten Direktiven lassen schon vom Namen her auf ihre Bedeutung schließen, wie das Setzen des TCP-Ports, auf dem der Server auf Client-Requests lauscht“. Die Kon” figuration von ganzen Verzeichnissen oder Dateien kann über eine der folgenden Anweisungen geschehen: • <Directory Verzeichnis> Anweisungen </Directory> • <Files Dateiname> Anweisungen </Files> • <Location URL-Pfad > Anweisungen </Location> Als Beispiel sollen die Anweisungen in Zeile 15-19 von Listing 4.1 dienen. Sie beschränken den Zugriff des Verzeichnisses intra auf die Domain 129.27.114 (Zeilen 17 und 18), erlauben die Interpretation von SSI-Files und das Folgen“ von symbolischen Links ” (Zeile 16). Für eine vollständige Liste der möglichen Direktiven der Apache-Distribution sei auf die Server Dokumentation [ApacheDoc, 1999] und [Eilebrecht, 1999] verwiesen. 4.2 Module Das Modulkonzept des Apache war ein wesentlicher Faktor, der zur raschen Verbreitung und Akzeptanz des Servers beitrug. Einerseits können wie in Abschnitt 4.1.4 beschrieben, Module je nach gewünschter Funktionalität eingebunden oder weggelassen werden, andererseits können Module bei Bedarf auch selbst erstellt werden. Der Kern (Core) kann dabei je nach Anforderung immer klein gehalten werden und garantiert dadurch gute Performance. Ben und Peter Laurie [Laurie & Laurie, 1999] formulieren diesen Aspekt wie folgt: One of the great things about Apache is that if you don’t like what it does, ” you can change it.“ 85 4 APACHE HTTP SERVER 4.2 MODULE Apache stellt dazu ein API und ein funktionierendes Beispiel-Modul (mod_example) zur Verfügung. Das File mod_example.c illustriert die vorhandenen Callback-Mechanismen des Servers sowie die Verwendung von Apache API-Funktionen. Bevor man aber den direkten“ Weg geht und gleich selbst gewünschte zusätzliche ” Funktionalität implementiert, lohnt sich der Blick zu den in großer Anzahl vorhandenenen Apache Module7 . Für diesen Zweck gibt es die Apache Module Registry im Web (http://modules.apache.org), die es erlaubt innerhalb der dort registrierten Module, stichwortartig zu suchen. Nicht innerhalb der ASF entwickelte Module werden auch als Third-Party Module bezeichnet und sind aufgrund ihrer großen Anzahl ein Beweis für den Erfolg des Apache Open-Source Projekts. Nachfolgend einige wichtige Add-On Module8 , die derzeit häufig Verwendung finden. • mod_php • mod_ssl • mod_perl • mod_fastcgi • mod_cgi • mod_jserv Gerne zur Anwendung kommen auch die zahlreich vorhandenen AuthentifizierungsModule, wie zum Beispiel mod_auth_dbm oder mod_auth_mysql, die eine Authentifizierung über eine bestimmte Datenbank erlauben. Abbildung 4.1 zeigt abschließend den prozentuellen Verwendungsgrad der populärsten Add-On Module im Vergleich zur Gesamtheit der untersuchten Apache Web-Server. In diesem Fall untersuchte E-Soft [ESoft, 2000] mehr als 1.06 Millionen Apache Server nach deren Modul-Installation. Dynamic Shared Objects (DSO) Seit der Version 1.3 des Apache ist das dynamische Laden von Modulen in den Adressraum des HTTP-Daemon während des Starts entsprechend dem dlopen-Standard [Engelschall, 1998] möglich. Damit erspart man sich ein Neukompilieren des Servers beim Hinzufügen oder Entfernen eines Moduls und gewinnt zusätzlichen Komfort und Flexibiltät bei der Konfiguration. Um über die LoadModule-Direktive dynamisch Module laden zu können muss das Modul mod_so.c statisch in den Apache-Kern kompiliert werden. Alle Module 7 8 Nicht betrachtet werden hier die Standard Module der Apache-Distribution. Module, die nicht Bestandteil der Apache-Distribution sind. 86 4 APACHE HTTP SERVER mod frontpage Ben-SSL 6.62 6.70 23.85 PHP 2.37 19.59 Frontpage 2.16 mod perl 1.96 mod ssl 1.52 mod fastcgi % ApacheJServ 30 20 10 0 4.2 MODULE Abbildung 4.1: Prozentueller Verwendungsgrad der verschiedenen Add-On Module zur Gesamtheit von etwa 1.06 Millionen Apache Server. Quelle: [E-Soft, 2000]. der Apache-Distribution – außer http_core.c – können nun als DSO gelinkt werden. Die Standard-Konfiguration des Apache geht bereits diesen Weg, was ein Aufruf des httpd mit der Option -l verdeutlicht: Compiled-in modules: http_core.c mod_so.c Alle restlichen Module werden über LoadModule-Anweisungen im httpd.conf beim Start des Servers gelinkt, zum Beispiel: LoadModule mime_module /usr/lib/apache/mod_mime.so LoadModule perl_module /usr/lib/apache/libperl.so Die Erzeugung von DSO-Files, vor allem für Third-Party Module, wird durch ein, während der Übersetzung der Apache-Distribution an die Plattform angepasstes Perl-Skript (apxs9 ), noch zusätzlich erleichtert. Die Abschnitte 4.2.1–4.2.4 beschäftigen sich etwas genauer mit Module, die für Web-Applikationen aufgrund ihrer Funktionalität interessant sind. 4.2.1 mod include Mit dem Modul mod_include ist es möglich, SSI-Anweisungen (siehe Abschnitt 2.3.1) in HTML-Dokumenten zu verwenden. Wie in Abschnitt 4.2 beschrieben kann auch dieses 9 APache eXtenSion Tool. 87 4 APACHE HTTP SERVER 4.2 MODULE Modul statisch in den httpd gelinkt oder als DSO während der Laufzeit geladen werden. Letzteres ist die Regel. Standardmäßig sucht der Apache Server nicht nach SSI-Anweisumngen in HTMLFiles10 , dazu muss im httpd.conf konkret festgelegt werden, welche Dokumente SSIAnweisungen enthalten können. Files mit einer bestimmten Extension als SSI-Files zu kennzeichnen erweist sich dabei als vorteilhaft. Folgende Direktiven werden dazu benötigt: AddHandler server-parsed .shtml AddType text/html shtml Zusätzlich müssen auch die Verzeichnisse für SSI-Anweisungen frei geschaltet werden: <Directory /shtml> Options +Includes </Directory> Somit wird ein File test.shtml aus dem Verzeichnis /shtml vom Server auf IncludeAnweisungen untersucht. Um die Ausführung von CGI-Skripts zu unterbinden kann die Option Includes, durch IncludesNOEXEC ersetzt werden. Damit ist es mit den Anweisungen #exec und #file nicht mehr möglich CGI’s aufzurufen, die ein eventuelles Sicherheitsrisiko darstellen könnten. 4.2.2 mod perl Das Apache/Perl Projekt der ASF versucht, den sehr mächtigen Perl Interpreter in den Apache HTTP Server zu integrieren. Dabei werden die Perl Runtime Libraries in den Server gelinkt und ein Perl-Interface dem Server API zur Verfügung gestellt. Das Server Plug-In mod_perl ist das Resultat der Integration. Wie aus Abbildung 4.1 auf Seite 87 hervorgeht, ist mod_perl ein sehr beliebtes Apache Add-On Modul, das nun konkret für zweierlei Zwecke dienlich ist: 1. Apache Module können damit völlig in Perl programmiert werden. 2. Der persistente im Server eingebettete Interpreter vermeidet den Overhead, bei Perl CGI-Skripts einen externen Interpreter starten zu müssen. 10 Alle HTML-Files nach Include-Anweisungen per Voreinstellung zu parsen, würde die Leistung des Servers sichtlich drosseln. 88 4 APACHE HTTP SERVER 4.2 MODULE Für die Funktion in Punkt 2 wird die CGI-Umgebung des Servers emuliert, sodass bestehende CGI-Skripts auch unter mod_perl ohne Änderung lauffähig sind. Das Perl Modul Apache::Registry ist für diese Emulation verantwortlich und cacht“ einmal aufgeru” fene und somit kompilierte CGI-Skripts für die weitere Verwendung. Dieses Vorgehen begründet die beschleunigte Ausführung von CGI’s unter mod_perl, verlangt aber zusätzliche Vorsicht bei der Programmierung der Skripts, zum Beispiel in der Festlegung der Sichtbarkeit von Variablen. Da Skripts unter mod_perl eine Lebenszeit“ über meh” rere HTTP-Requests hinaus besitzen, können Variable, die fälschlicherweise als global definiert wurden, Grund von Fehlern in der Applikation werden. Daher sollte man den Perl Interpreter immer mit der Option -w ( turn warnings on for compilation“) starten ” und die Compile-Direktive strict verwenden: #!/usr/bin/perl -w use strict; Gezwungenermaßen programmiert man dadurch wesentlich sauberer“. Um mod_perl ” als CGI Replacement zu verwenden, sind nach der Installation als DSO (empfohlen), folgende Einstellungen in der Server Konfiguration (httpd.conf) vorzunehmen: Listing 4.2: Konfiguration von mod_perl 1 2 3 4 5 6 Alias /perl/ /usr/local/httpd/perl-scripts/ <Location /perl> SetHandler perl-script PerlHandler Apache::Registry Options +ExecCGI </Location> In Listing 4.2 wird für Perl-Skripts ein eigenes Verzeichnis verwendet, dem der PerlHandler Apache::Registry (Zeile 4) zugewiesen wird. Unabhängig von der Extension werden alle exekutierbaren Files in diesem Verzeichnis von Apache::Registry behandelt, sofern wie in Zeile 5 die Ausführung von CGI’s gestattet ist. Will man alle Files mit der Extension .pl“ von Apache::Registry gehandelt wissen, trifft man folgende ” Einstellungen: <Files *.pl> SetHandler perl-script PerlHandler Apache::Registry 89 4 APACHE HTTP SERVER 4.2 MODULE Options ExecCGI </Files> Abschließend kann festgestellt werden, dass CGI Web-Applikationen mit mod_perl den großen Vorteil haben, wesentlich schneller zu sein als vergleichbare Lösungen mit JavaTechnologien (Jserv, JSP) oder ASP. Der einzige Nachteil liegt in der beschränkten client-seitigen Anwendungsmöglichkeit. 4.2.3 mod php3 Auf beinahe einem Viertel aller Apache Server (siehe Abbildung 4.1 auf Seite 87) ist mod_php3 als Zusatz installiert. Damit ist mod_php3 das derzeit populärste Apache AddOn Modul am Markt. Die Version 3.0.15 (stabil) und die Version 4 Release Candidate 1 sind zur Zeit unter http://www.php.net verfügbar. In 2.3.4 auf Seite 45 wurde PHP bereits näher untersucht und als sehr effektive und dabei frei erhältliche Web-Technologie identifiziert. Was dabei weniger Erwähnung fand, war der Umstand, dass PHP ein reines Apache Produkt ist und nur auf Basis dieses einen Servers zur Zeit läuft. Aufgrund der Marktführung des Apache im Web-Server-Bereich ein vertretbarer Nachteil. Zeitgemäß installiert man mod_php3 am bequemsten als DSO via apxs zu einer vorhandenen Apache Distribution. Das entspricht auch dem empfohlenen Weg. Anschließend überläßt man apxs die Einträge ins httpd.conf oder nimmt diese selbst vor. In Listing 4.3 wird zum Beispiel PHP nur dann als Modul geladen, wenn httpd mit dem Schalter -D PHP gestartet wird: Listing 4.3: Konfiguration von mod_php3 1 2 3 4 5 <IfDefine PHP> LoadModule php3_module /usr/lib/apache/libphp3.so AddModule mod_php3.c AddType application/x-httpd-php3 .php3 </IfDefine> Die Direktiven innerhalb der IfDefine Sektion werden nur dann ausgeführt, wenn PHP als Parameter definiert wurde. Nach dem Laden und Aktivieren des Moduls in Zeile 2 und 3 weist die AddType Direktive in Zeile 4 dem festgelegten PHP-MIME-Typ Dateien mit der Endung .php3“ zu. Wird eine solche Datei mit einem HTTP-Request ” 90 4 APACHE HTTP SERVER 4.2 MODULE angefordert, leitet Apache diesen Request an mod_php3 weiter, das die Datei nach PHPAnweisungen parst und dabei ein entsprechendes HTML-Dokument erstellt. Dieser Ablauf ist in Abbildung 4.2 in vereinfachter Form dargestellt. Abbildung 4.2: Apache Server mit PHP Modul Die eigentliche Konfiguration des PHP-Parsers erfolgt in dem File php3.ini für PHP 3.0.x oder php.ini für PHP 4. Diese Datei wird beim Start des Apache Servers geladen und kontrolliert wesentliche Aspekte der PHP-Scripting-Umgebung. Listing 4.4 fasst die wichtigsten Optionen auszugsweise zusammen: Listing 4.4: Auszug aus php3.ini 1 2 3 4 5 6 7 8 9 10 11 [PHP_3] engine = On short_open_tag = On max_execution_time = 30 memory_limit = 8388608 display_error = On [MySQL] mysql.allow_persistent = mysql.default_host = mysql.default_user = mysql.default_password = ; ; ; ; ; enable PHP 3.0 parser allow the <? tag. Max. execution time of each script, in sec. Max. amount of memory a script may consume Print out errors (part of the HTML script) On localhost user secret ; ; ; ; allow or prevent persistent link default host for mysql_connect() default user for mysql_connect() default pwd for mysql_connect() Die Sektion [PHP_3] setzt verschiedene Optionen, die das allgemeine Verhalten der PHPUmgebung betreffen, wie das Festlegen eines oberen Speicher-Limits für Skripts oder eines Logging-Schemas. Die restlichen Sektionen konfigurieren über Direktiven verschiedene Datenbank-Einstellungen (siehe Listing 4.4 Sektion [MySQL]), die je nach Daten- 91 4 APACHE HTTP SERVER 4.2 MODULE bank in ihrem Umfang sehr stark variieren. Midgard 11 , eine frei erhältliche Web-Applikation Entwicklungs-Plattform basiert, völlig auf Apache und der PHP-Scripting-Umgebung. 4.2.4 mod jserv Um Java Servlets ausführen zu können, bedarf es einerseits der entsprechenden ServletKlassen12 und andererseits einer Java Virtual Machine, kurz JVM. Wie in Abschnitt 2.3.6 bereits angedeutet, kann bei in Java implementierten Web-Servern dafür die bereits für den Server selbst laufende JVM verwendet werden. Bei einem von Grund auf in C geschriebenen Web-Server, wie dem Apache, benötigt man jedoch einen alternativen Lösungsansatz. Bei jedem Servlet-Request eine eigene JVM zu starten, verwehrt sich aufgrund der benötigten Zeit zum Start eines neuen JVM-Prozesses13 . Daher hat sich das Entwicklungs-Team des Apache JServ Project für eine three-tier“ Architektur ent” schieden, das heißt, die Servlet Engine ist nicht Teil des Servers sondern eine standalone“ ” Applikation. Folgende Schichten lassen sich identifizieren: 1. HTTP-Client: Web-Browser. 2. HTTP-Server und AJP-Client: Apache mit mod_jserv. 3. AJP-Server: Apache JServ. Client und Web-Server kommunizieren mittels HTTP. Das Web-Server Modul mod_jserv und die Servlet Engine kommunizieren über das Apache JServ Protocol, kurz AJP. Wie sehen nun die einzelnen Schritte eines Servlet-Requests aus? Abbildung 4.3 stellt den Ablauf eines Requests vom Client zur Servlet Engine schematisch dar. Es ergibt sich der folgende Ablauf: • Der Client sendet einen HTTP-Request an den Apache Web-Server. • Im Apache Web-Server wird der HTTP-Request vom mod_jserv Modul in einen AJP-Request umgeformt und an die Servlet Engine Apache JServ geschickt. 11 Application Server Suite, http://www.midgard-project.org. Grundpakete javax.servlet und javax.servlet.http werden über das Java Servlet Development Kit (JSDK) installiert. 13 Eine Standard Sun JVM benötigt etwa 5 Sekunden um zu starten. 12 92 4 APACHE HTTP SERVER 4.2 MODULE Abbildung 4.3: Apache JServ three-tier“ Operation. Quelle: [Mazzocchi & Fumagalli, 1998]. ” • Apache JServ erzeugt aus dem AJP-Request ein ServletRequest Objekt. Zusätzlich wird ein ServletResponse Objekt generiert, das die Rückgabe-Daten des Servlets kapselt. • Das ServletResponse Objekt wird nach Ausführung des Servlets in eine AJPResponse umgewandelt und an mod_jserv zurückgeschickt. • mod_jserv erzeugt aus der AJP-Response eine HTTP-Response, die an den WebBrowser gesendet wird. Für genauere Informationen über Apache JServ sei auf [Mazzocchi & Fumagalli, 1998] verwiesen. Installation: Als Voraussetzung neben dem eigentlichen Apache Web-Server müssen JDK14 und JSDK 2.015 auf dem System verfügbar sein. Sind diese Anforderungen erfüllt, stellt die Apache JServ Distribution die Servlet Engine (Apache JServ ) und das Modul mod_jserv für den Web-Server bereit. Für letzteres empfielt sich wieder die Installation als DSO. Genauere Beschreibungen der Installation sind in [Haberstadt, 1998; Yumul, 1998] zu finden. 14 15 Java Development Kit, http://java.sun.com/products/jdk. Java Servlets Development Kit, http://java.sun.com/products/servlet. 93 4 APACHE HTTP SERVER 4.2 MODULE Konfiguration: Ausgehend von oben angegebener Installation ist die Servlet Konfiguration des Apache auf verschiedene Files – siehe Abbildung 4.4 – aufgeteilt: httpd.conf Include jserv/jserv.conf ApJServProperties jserv/jserv.properties root.properties jserv/zone.properties LoadModule jserv_module /usr/lib/apache/mod_jserv.so ApJServDefaultProtocol ajpv12 ApJServDefaultPort 8007 ApJServMount /servlets /root wrapper.bin=/usr/lib/java/bin/java wrapper.classpath=/usr/lib/apache/ApacheJServ.jar wrapper.classpath=/usr/local/jsdk/lib/jsdk.jar wrapper.classpath=/usr/lib/java/mysql.jdbc/mysql_comp.jar port=8007 zones=root repositories=/usr/local/httpd/servlets autoreload.classes=true Abbildung 4.4: Die Servlet Konfigurationsfiles im Verzeichnis /etc/httpd und /etc/httpd/jserv. Reihenfolge des Aufrufs und die wichtigesten Anweisungen innerhalb der Files. 1. jserv.conf: Ladet das mod_jserv Modul und beinhaltet verschiedene Direktiven für die Servlet Engine, zum Beispiel Festlegen des Protokolls und des Ports. 2. jserv.properties: Apache JServ parst dieses File beim Start und findet Informationen über den Platz“ der JVM, den Klassen-Pfad16 und den verschiedenen ” Servlet Zonen (eine Menge von zusammengehörigen Servlets). In unserem Fall ist die Servlet Zone root definiert. 3. zone.properties: Setzt den Pfad zu den sogenannten Servlet Repositries, die zu dieser Zone gehören. Im gegebenen Beispielsfall: Alle Servlets im Verzeichnis /usr/local/httpd/servlets gehören zur Servlet Zone root. Die Servlets unterliegen damit denselben Sicherheits-Einschränkungen. 16 Wichtig: Hier muss der Pfad zu den JDBC Treiber-Klassen angegeben werden, sonst werden diese über die Methode Class.forName(...) nicht gefunden. 94 5 Projekt CO2 The Need for Speed a . a Jakob Nielsen Gleichnamiger Artikel [Nielsen, 1997]. Content Organisation 2, kurz CO2, ist eine auf dem Hyperwave Information Server basierende Web-Applikation, die die Strukturierung von Organisationsinformationen innerhalb der Creditanstalt und Bank Austria, kurz CA/BA, zur Aufgabe hat. CO2 wurde nach den Vorgaben der CA durch ein Projekt-Team des IICM im Zeitraum Jänner bis Oktober 1999 entwickelt. Aufgrund der Größe und Komplexität des Systems liegt der Schwerpunkt dieses Kapitels auf der Applikationsstruktur und in der ausführlichen Erklärung der Requestabarbeitung. Mit Requestabarbeitung ist die Art und Weise gemeint, mit der CO2 ausgehend von einem Client-Request eine HTML-Seite generiert. Im Rahmen des CO2-Gesamtprojektes wurde ich neben kleineren Aufgaben mit der gesamten Umsetzung der Dialogdesign-Vorgaben betraut. Abschnitt 5.1 beschreibt in allgemeiner Form das CO2-Projekt und sein Umfeld. Anschließend erörtert Abschnitt 5.2 die grundsätzlichen Konzepte der Objekt-Bibliothek hwlib, die als Basis für die gesamte Applikationsentwicklung eingesetzt wurde. Abschnitt 5.3 diskutiert die grundsätzliche Struktur der Applikation und Aspekte der implementierten CO2-Objekte. Des weiteren beschreibt dieser Abschnitt die einzelnen Schritte der Requestverarbeitung im Detail. Abschnitt 5.4 kommentiert einige im Projektverlauf aufgetretene Probleme und beschließt mit dem derzeitigen Projektstatus dieses Kapitel. 95 5 PROJEKT CO2 5.1 5.1 ALLGEMEINER ÜBERBLICK Allgemeiner Überblick Das CA Pflichtenheft bezeichnet CO2 als ein Contentprojekt, das sich mit Inhalten und deren Strukturierung auf dem Konzern1 -Intranet beschäftigt. Der Begriff Inhalt“ steht ” dabei für konzernweite Organisationsinformationen und dem internen Richtlinienwesen, das folgende Punkte umfasst: • Arbeitsanweisungen • Hilfetexte • Arbeitshandbücher • Schulungsunterlagen • Systembeschreibungen • Lexika Als Plattform für dieses System entschied man sich für den Hyperwave Information Server, der auch gut in die bestehende Systemlandschaft – durchwegs Windows – passte. Mit der Implementierung der Applikation beauftragte die CA ein Entwickler-Team des IICM, das bereits auf Erfahrungen vorangegangener Projekte2 mit dem HWIS und der Objekt-Bibliothek hwlib zurückgreifen konnte. 5.1.1 Zielsetzung Als ein web-basierendes Intranet-Informations- und Hilfesystem soll CO2 den folgenden Anforderungen entsprechen: 1. CO2 soll sich in den konzernweiten Informationsraum einbetten und mit den vorhandenen Systemen (ARIS, RUBI, MORIZ, NEWS, etc.)3 kooperieren. 2. Die Redundanzen der heterogenen, gewachsenen Struktur konzernweiter Informationen sollen minimiert werden. Ein bestimmter Inhalt ist genau einmal im Informationsraum physikalisch gespeichert und kann über Referenzen von anderen Objekten angesprochen werden. 3. Inhalte sollen strukturiert, einheitlich gegliedert und aktuell sein. Die Gliederung der Information soll abwicklungsorientiert erfolgen, das heißt auf Basis der bewährten Struktur von Prozessmodellen. 1 Creditanstalt und Bank Austria. Kurz zuvor implementierte das gleiche Team einen Prototypen eines Support-Tracking-Systems. 3 Intranet-Applikationen für verschiedene Aufgabenbereiche im CA/BA-Intranet. 2 96 5 PROJEKT CO2 5.1 ALLGEMEINER ÜBERBLICK 4. Der Zugang zur Information soll rasch, einfach und an die Aufgabenstellung angepaßt erfolgen. Der Mitarbeiter soll die Information dann konsumieren können, wenn er sie situationsbedingt braucht, etwa bei der Anlage eines neuen Kontos. 5. Die Wartung soll über ein Autorensystem einfach und effizient ausführbar sein. Das CO2-Pflichtenheft bezeichnet die prozesshaften Regelungen“ als Kernstück der Ap” plikation. Durch Einbeziehung des logischen Umfeldes gelingt es den globalen Kontext der Regelung leichter zu erkennen. 5.1.2 Entities Die bis dato in Arbeitshandbüchern und Arbeitsanweisungen der CA/BA vorhandene Information kann aus prozessorientierter Sicht in die folgenden System-Entities unterteilt werden: • Prozessmodelle – Listen – Formulare • Vorgänge – Bildschirmmasken • Tätigkeiten – Fragestellungen • Arbeitsschritte – Varianten • Medien • Felder • Lexikon – Transaktionen Diese Aufzählung entspricht auch der zugrunde liegenden Informationshierarchie: Ein Prozessmodell besteht aus einem oder mehreren Vorgängen. Ein Vorgang besteht aus einem oder mehreren Tätigkeiten, usw. Nur die angeführte Entity Lexikon“ fügt sich ” nicht in diese Schema. Abbildung 5.1 zeigt die Darstellung eines Vorganges im Web-Browser. Der Balken links beherbergt die Navigation, die jeweils den Kontext des aktuellen Objekts wiedergibt, das im rechten Teil des Browser-Fensters dargestellt wird. Das gezeigte Objekt in Abbildung 5.1 verdeutlicht auch den modularen Aufbau eines Objekts aus Unterobjekten. Im Testfall besteht der dargestellte Vorgang aus verschiedenen Fragestellungen, die wiederum verschiedene Varianten als Antwort beinhalten. 97 5 PROJEKT CO2 5.1 ALLGEMEINER ÜBERBLICK Abbildung 5.1: CO2-Benutzeroberfläche im Web-Browser. 5.1.3 Kontext CO2 kooperiert in erster Linie mit auf VIP4 -Basis erstellten Produkten, die über einen Produktschlüssel einem Prozessmodell des Informationsbereiches zugeordnet werden. Somit werden zum Beispiel Hilfestellungen für die Erzeugung oder Anlage gewisser Produkte dem Benutzer ad hoc zugänglich. 5.1.4 Programmieraufgaben Aus den allgemeinen Rahmenbedingungen und dem Pflichtenheft des Projekts wurden folgende Teilaufgaben für die Programmierung der Web-Applikation abgeleitet: 1. Integration der hwlib in den vorhandenen Prototypen. 2. Teilweises Redesign der Prototyp-Anwendung. 3. Übertragung der Systementitäten auf JavaScript Objekte. 4 VIP wurde parallel zu CO2 als Produktverwaltungssystem der CA/BA am IICM entwickelt. 98 5 PROJEKT CO2 5.2 HWLIB - EINE OBJEKTBIBLIOTHEK 4. Entwicklung des Requestablaufes. 5. Implementation der Eingabemasken. 6. Umsetzung des Dialogdesigns. 7. Feinschliff und Optimierung. Die aufgezählten Punkte müssen dabei in chronologischer Reihenfolge betrachtet werden, das heißt Teilaufgabe 2 setzt die Implementierung von Teilaufgabe 1 voraus. Die Erklärung des entwickelten Requestablaufes bildet den Schwerpunkt der Diskussion. 5.2 hwlib - Eine Objektbibliothek Als Basis für die Implementierung des CO2-Projektes diente die am IICM entwickelte Hyperwave Library – kurz hwlib. Die Erfahrung vorhergegangener Projekte zeigte, dass gewisse Funktionalität oft benötigt wird oder sich nur nach äußerlichen Kriterien von Applikation zu Applikation unterscheiden ließ. Um nicht jedesmal Entwicklungszeit an den gleichen Problemen zu vergeuden, verwirklichte man die Idee5 einer ObjektBibliothek für den HWIS, die fertige Bausteine für individuelle Projekte bereitstellt. Die hwlib implementiert dabei objektorientierte Prinzipien, die teilweise auch mit JavaScript verwirklicht werden können. Abschnitt 5.2.1 erklärt wie man mit JavaScript ansatzweise objektorientiert programmieren kann. Anschließend gibt Abschnitt 5.2.2 einen allgemeinen Überblick über den hwlib-Funktionsumfang. Abschnitt 5.2.3 verdeutlicht den objektorientierten Ansatz durch die Beschreibung der Objekt-Hierarchie. Die allgemeine Thematik der hwlib erweist sich als sehr umfangreich, daher werden in diesem Abschnitt nur die für das weitere Verständnis dieser Arbeit benötigten Grundlagen erörtert. Für das interessierte Publikum sei auf den hwlib Reference Guide [Wurzenberger, 1999] verwiesen. 5.2.1 Objektorientierte Programmierung mit JavaScript JavaScript ist eine objektorientierte Sprache basierend auf Prototypen, im Gegensatz zu Klassen-basierenden Sprachen wie Java und C++ [jsOOP, 1997]. Das macht einen wesentlichen Unterschied, da JavaScript zwischen den Begriffen Klasse und Instanz nicht 5 Harald Krottmaier ([email protected]) ersann im September 1998 dieses Konzept. 99 5 PROJEKT CO2 5.2 HWLIB - EINE OBJEKTBIBLIOTHEK wie gewohnt formal unterscheidet. Es gilt nur, dass alle Objekte, die von ein und demselben Konstruktor6 erzeugt wurden, Instanzen einer bestimmten Klasse7“ sind. Dieses ” Prinzip soll nun anhand einer konkreten Klassendefinition veranschaulicht werden, als Beispiel diene die nachfolgende Definition der Klasse Drawing: Listing 5.1: Basisklasse Drawing 1 2 3 4 5 6 function Drawing(xpos,ypos){ this.x = xpos || 0; this.y = ypos || 0; this.move = Drawing_move; } Drawing.prototype.move = Drawing_move; 7 8 9 10 11 function Drawing_move(x,y){ this.x += x; this.y += y; } Die Klasse Drawing besteht aus zwei Membervariablen und einer Memberfunktion, wobei letztere schon außerhalb des Funktionsrumpfes über die prototype Eigenschaft deklariert wurde. Die eigentliche Definition der Memberfunktion move – in Listing 5.1 von Zeile 9 bis 11 – ist an keinen speziellen Platz gebunden. Über die Anweisung var drawing = new Drawing(1,2); kann nun ein neues Drawing-Objekt erzeugt werden. Im nächsten Schritt wird eine Klasse Rectangle von der Klasse Drawing abgeleitet. Einfache Vererbung ist mit JavaScript sehr wohl möglich und wird über eine sogenannte Prototyp-Kette mit der speziellen Eigenschaft __proto__ realisiert. Die Klasse Rectangle leitet sich wie folgt ab: Listing 5.2: Abgeleitete Klasse Rectangle 1 2 3 4 6 7 function Rectangle(x,y,radius){ this.base = Drawing; this.base(x,y); this.r = radius || 1; In JavaScript eine simple Funktion. Der Begriff Klasse wird in der weiteren Diskussion stv. für eine bestimmte Konstruktorfunktion verwendet. 100 5 PROJEKT CO2 5 6 5.2 HWLIB - EINE OBJEKTBIBLIOTHEK } Rectangle.prototype.__proto__ = Drawing.prototype; In Zeile 2 und 3 in Listing 5.2 wird explizit der Konstruktor der Superklasse aufgerufen. Zeile 6 verdeutlicht die Vererbung mittels Prototyp-Kette, wobei im Beispiel bereits die optimierte Form der Syntax gewählt wurde, wie sie auch in der hwlib zur Anwendung kommt. Dieser kurze Ausflug in die objektorientierte Welt beweist, dass mit relativ einfachen Mitteln in JavaScript das objektorientierte Paradigma imitiert wird. Dadurch kann man sich teilweise die Vorteile der OOP8 zu Nutze machen solange man sich nur konsequent genug an die definierten Regeln hält, wie es beispielsweise die hwlib vorexerziert. 5.2.2 Funktionalität im Überblick Alles was auf irgendeine Weise zur hwlib gehört befindet sich per definitionem im Verzeichnis hwlib/ des Wavemaster-Verzeichnisses, zum Beispiel: ~/wavemaster-5.1/hwlib/ Die Kernobjekte der hwlib besitzen das Präfix hw_“ in ihrem Namen und werden in ” gleichnamigen Files mit der Extension .js“ gespeichert. Zum Beispiel ist der Source” code des hw_TextObject im File hw_TextObject.js zu finden. Alle Files der Kernobjekte befinden sich im Verzeichnis hwlib/objects/. Neben den Kernobjekten stellt die hwlib auch eine große Menge zusätzlicher Objekte zur Verfügung, die im Verzeichnis hwlib/utils organisiert sind und von dort auf Bedarf eingebunden werden können. Helfer-Objekte sind für die Server- und die Client-Seite der Applikation für die verschiedensten Aufgaben vorhanden, zum Beispiel das Objekt hwlib_url zur Manipulation von URLs. Objectbrowser, Sequencer, Rightswizard sind kleine, oft benötigte Minianwendungen, die ebenso fixer Bestandteil der Library geworden sind. Für die Erzeugung von Formularen werden hw_FormEntry-Objekte verwendet, die es erlauben ohne direkte HTML-Kenntnisse Formulare zu bauen, die dem derzeitigen Template-Design des HWIS entsprechen. Dieses Verfahren hat sich als sehr komfortabel und zeitsparend erwiesen. Die Superklasse aller Objekte der Library bildet das hw_object. Von Seiten der Funktionalität ist das hw_Object das mächtigste Objekt der hwlib. Die in großer Anzahl 8 Object-Oriented Programming. 101 5 PROJEKT CO2 5.2 HWLIB - EINE OBJEKTBIBLIOTHEK vorhandenen Methoden erlauben die verschiedensten Manipulationen mit Objekten am HWIS: Verschieben, Kopieren, Löschen und Erzeugen von Objekten erfolgt mit einfachen Methodenaufrufen und muss nicht immer zeitintensiv über Methoden des JavaScript API implementiert werden. Fast alle restlichen Kernobjekte der Library entsprechen den spezialisierten Objekttypen des HWIS. Als Beispiel kapselt das hw_CollectionObject Fähigkeiten einer Collection des HWIS und besitzt zusätzliche Methoden für die Manipulation der Kinder-Objekte. Die Objekt-Hierarchie der Library in Abschnitt 5.2.3 verdeutlicht diese Verbindung. Aus diesen Gründen fungiert die hwlib als Schnittstelle zwischen Programmierer, Hyperwave API und Objekten am HWIS. Erzeugung eines Objekts: Ein reales Server-Objekt kann in sehr einfacher Weise durch ein äquivalentes, viel mächtigeres hwlib-Objekt repräsentiert werden. Angenommen das Objekt am Server hat den Namen "test/test.txt", dann kann mit der JavaScript-Anweisung var testObject = new hw_Object("test/test.txt"); ein spezielles hw_Object generiert werden, mit dem etwa die Änderung von Attributen viel leichter zu bewerkstelligen ist. Im unserem Falle handelt es sich offensichtlich um ein Text-Objekt, das wesentlich besser durch ein hw_TextObject repräsentiert werden kann. Um nicht jedesmal die adäquaten hwlib-Objekte aus den Server-Objekten in eigener Regie erzeugen zu müssen, übernimmt diese Aufgabe in der hwlib ein Object Generator . Dieser Generator erzeugt aus der übergebenen GOID eines Objektes automatisch das passende Library-Objekt: testObj = hw_ObjectGenerator(testObj.obj()); Als Kriterium für die Auswahl des richtigen hwlib-Objekts dienen spezielle Attribute des Server-Objekts wie DocumentType, CollectionType oder DocumentClass. Integration in den Wavemaster: Die hwlib greift sehr stark in das ursprüngliche Template-Konzept des Wavemasters ein. Das passiert durch Einbinden hwlib-spezifischer JavaScript-Files und PLACETemplates im Master-Template des Wavemasters, sprich im master.html. Ein hwlibUser-Template eines Objekts sieht wie folgt aus: %%include "hwlib/default.usertemplate.amster.hwt"%% %%hwlib_defaultusertemplate_master_hwt%% 102 5 PROJEKT CO2 5.2 HWLIB - EINE OBJEKTBIBLIOTHEK Abbildung ?? stellt beide Varianten der hwlib-Integration grafisch dar und verdeutlicht das zeitliche Zusammenspiel der involvierten Files. Auch CO2 verwendet spezielle User- body macro footer macro request hwlib_defaultusertemplate_master_hwt default.body.hwt macro process standard actions Web-Browser header macro response default.include.hwt default.action.suffix.hwt default.global.hwt default.action.hwt default.master.html Templates zum Einbinden der hwlib und der applikationsspezifischen Files. default.include.hwt default.global.hwt default.action.hwt hwlib HTML Header default.body.hwt hwlib HTML Footer Abbildung 5.2: Request/Response-Schema über default.master.html oder PLACE-Makro hwlib_defaultusertemplate_master_hwt 5.2.3 Objekt-Hierarchie Alle Kernobjekte der hwlib sind in eigenen Files im Verzeichnis hwlib/objects zu finden. Aufgrund des objektorientierten Ansatzes – von der hwlib von Grund auf verfolgt – bilden diese Objekte einen Klassenbaum, der die Ableitungsbeziehungen der einzelnen Objekte visualisiert. Abbildung 5.3 stellt die Klassenhierarchie grafisch in UML9 Notation dar und zeigt die ursprüngliche Beziehung aller Objekte zum hw_Object. Die sehr mächtige und breit gefächerte Funktionalität des hw_Object wird dabei an alle Kernobjekte der Library vererbt. Die hwlib ermöglicht dem Programmierer sich auf die wesentlichen Punkte der Applikationsentwicklung zu konzentrieren, nämlich auf die Modellierung der Datenstrukturen und dem Architectural Design“. Für die anfallenden Standardaufgaben stellt die ” 9 Uniform Modelling Language 103 5 PROJEKT CO2 5.3 STRUKTUR UND REQUESTABARBEITUNG hw_Object hw_DocumentObject hw_TextObject hw_TextObjectHTML hw_ImageObject hw_GenericObject hw_CollectionObject hw_SequenceObject hw_ClusterObject hw_MultiClusterObject hw_AlternativeClusterObject hw_QueryObject Abbildung 5.3: hwlib Objekt-Hierarchie in UML Darstellung. hwlib leicht konfigurierbare Objekte oder sogar ganze Module bereit, ein großer Vorteil auch für die Fertigung von Prototypen, da in sehr kurzer Zeit bereits ansehnliche Ergebnisse geliefert werden können. Deshalb entschied sich auch das Entwickler-Team des CO2-Projekts für den Einsatz der hwlib. 5.3 Struktur und Requestabarbeitung Wie bereits in Abschnitt 5.2 erwähnt werden in der CO2-Applikation spezielle UserTemplates eingesetzt, um die notwendigen PLACE und JavaScript-Files einzubinden. Wie fügen sich nun diese in den Verzeichnisbaum der Applikation? Abschnitt 5.3.1 zeigt wie die File- und Verzeichnisstruktur der Applikation aussieht. Einige spezielle CO2-Objekte werden daraufhin in Abschnitt 5.3.2 beschrieben. Anschließend führt die Diskussion direkt in das Konzept der CO2-Requestbearbeitung in Abschnitt 5.3.3. Dort wird Schritt für Schritt erklärt, wie ausgehend von einem Client-Request eine entsprechende HTML-Seite generiert wird. 104 5 PROJEKT CO2 5.3.1 5.3 STRUKTUR UND REQUESTABARBEITUNG File-Hierarchie Alle Files und Templates der Applikation befinden sich im Verzeichnis wavemaster-ca/ca/fk/co2 der HWIS-Installation oder im Wavemaster-Verzeichnis eines Users, was generell während der Entwicklungsphase praktiziert wird. Abbildung 5.4 veranschaulicht im linken Teil den Kontext des Applikationsverzeichnisses und listet im rechten Teil sämtliche CO2-Objektfiles auf. Insgesamt umfasst die Applikation 32 spezialisierte CO2-Objekte, Abbildung 5.4: CO2 File-Hierarchie und Objektfiles. die durch das Präfix co2_“ gekennzeichnet sind. Im Verzeichnis objects/ werden die ” entsprechenden JavaScript Source-Files organisiert. Mit der aus Abbildung 5.4 ersichtlichen Filestruktur verfolgt CO2 die gleiche Linie wie in der hwlib. 5.3.2 CO2-Objekte Abgeleitet von den organisatorischen Prozesseinheiten des Pflichtenhefts wurden JavaScript Objekte für die Applikation entworfen. Dabei fanden die meisten Entities – siehe 105 5 PROJEKT CO2 5.3 STRUKTUR UND REQUESTABARBEITUNG Abschnitt 5.1.2 – eine gleichnamige Objektrepräsentation. Einige werden nachfolgend zum besseren Verständnis aufgelistet: Prozessmodell −→ co2_Prozessmodell Vorgang −→ co2_Vorgang Tätigkeit −→ co2_Taetigkeit Arbeitsschritt −→ co2_Arbeitsschritt Medium −→ co2_Medium Die vollständige Liste der CO2-Objekte kann im rechten Teil von Abbildung 5.4 gefunden werden. Superklasse fast aller CO2-Objekte ist ein Cluster mit dem Namen co2_Cluster, der vom hw_CollectionObject abgeleitet und spezialisiert wurde. Das führt gleich zu einem Kernpunkt der CO2-Applikation und hwlib-basierenden Applikationen im Generellen: Eine modellierte Entity wird fast immer durch ein ContainerObjekt am Hyperwave Server repräsentiert. Das heißt, ein JavaScript-Objekt besteht aus mehreren Server-Objekten und besitzt nur als Ganzes eine sinnvolle Bedeutung für die Applikation, ein Ansatz den Hyperwave mit der Einführung der Dokument-Klassen – siehe Abschnitt 3.2.3 – seit kurzem auch verfolgt. Als Beispiel soll das Objekt co2_Fragestellung dienen, das aus einer Reihe von Unterobjekten modelliert wurde. Die Relationen der einzelnen Klassen oder Objekte sind co2_Fragestellung 1 co2_Tip 1 co2_Kurzbeschreibung 1 co2_Beschreibung * co2_Variante 1 * + co2_Kurzbeschreibung co2_WrapperObjectTaetigkeit co2_Fragestellung Abbildung 5.5: Klassendiagramm der co2_Fragestellung in Abbildung 5.5 dargestellt. Im Falle der Fragestellung zeigt sich ein optional rekursiver Aufbau eines Objekts, da eine Variante wieder eine Fragestellung beinhalten kann. Dieser Umstand kann fallweise zu sehr komplexen, verschachtelten Strukturen am Server führen, die bei der Darstellung des Objektes durchschritten“ werden müssen. Das kann bei ” 106 5 PROJEKT CO2 5.3 STRUKTUR UND REQUESTABARBEITUNG der dynamischen Erzeugung der HTML-Repräsentation des angeforderten Objektes zu sehr langen Verarbeitungszeiten“ führen. Siehe Abbildung 5.1 für ein Beispiel einer ” Fragestellung. 5.3.3 Requestabarbeitung Das Herz der Applikation liegt im Aufrufkonzept der Makros und Funktionen und in der Art und Weise, wie diese über Includes eingebunden werden. Ausgehend von einem Beispiel-Request soll der Ablauf der Verarbeitung am Server Schritt für Schritt erklärt werden. Da es sich dabei um relativ komplexe Verarbeitungszusammenhänge handelt, wird die Erklärung durch die schematische Darstellung des Ablaufes in Abbildung 5.6 unterstützt. Die in Abbildung 5.6 eingezeichneten Punkte (❶ – ❽) definieren dabei die beschriebenen Verarbeitungschritte der Reihe nach. Ausgangssituation: Ein Benutzer der CO2-Applikation möchte sich gerne über einen speziellen Vorgang – nennen wir ihn ‘Vorgang A’ – näher informieren. Dazu wählt er aus der im Web-Browser dargestellten Vorgangsliste ‘Vorgang A’ per Mausklick. Im gleichen Moment schickt der Web-Browser einen Request mit der kodierten URL des aufzurufenden Vorganges an den Server. Dort beginnt ausgehend von der URL und dem festgelegten Place-Template des Vorgangsobjekts die Abarbeitung des Requests. ❶ Über den ersten Teilstring der URL – die Zeichenfolge vor dem Fragezeichen ( ?“) ” am Anfang des URL-Strings – wird ein spezielles Objekt am Server referenziert, im Beispiel ‘Vorgang A’. Der Server erkennt, dass im Fall von ‘Vorgang A’ das PLA” CETemplate“ Attribut gesetzt ist und verarbeitet anstelle des standardmäßigen Templatesatzes, das über das Attribut referenzierte Template. Dieses Template liegt ebenfalls am Server und besteht für die CO2-Applikation aus zwei Zeilen: %%include ca/fk/co2/master.hwt%% %%ca_fk_co2_master%% Die erste Zeile inkludiert das Master-Template der CO2-Applikation und in der zweiten Zeile wird das darin definierte Makro ca_fk_co2_master aufgerufen. ❷ Durch das Einbinden des Files master.hwt im ersten Schritt der Requestverarbeitung wird das Makro ca_fk_co2_master definiert. Dieses Makro bindet weitere 107 5 PROJEKT CO2 5.3 STRUKTUR UND REQUESTABARBEITUNG ca/fk/co2/master.hwt %%macro ca_fk_co2_master%% 5 include include hwlib/default.include.hwt createWrapperAndLink.action assignToOrganisations.action objects/co2_WrapperObjectVorgang.js objects/co2_WrapperObjectVorgang.js navi/co2_Navigation.js copyStellenRollen.action 6 ca/actions.hwt include include ca/fk/co2/actions.hwt objects/co2_Global.js objects/co2_Ansprechpartner.js ca/global.hwt 4 call ca/fk/co2/action.hwt %%htmlBuilder%% ca/fk/co2/include.hwt 3 1 Objekterzeugung: currentUrlObject currentHWObject layout BACA_identify.action poolIdentify.action passwdChange.action hwlib/default.actions.hwt insert.Action modify.action Requestparameter Debuglevels CO2, VIP, HWLIB displayForm.action ca/fk/co2/applicationBody.hwt browser/component.hwt %%macro applicationBody <SERVER> currentHWObj.displayContent(); </SERVER> sequencer/component.hwt %%macro htmlBuilderHead%% <HEAD> Meta-Tags Client-Side JS </HEAD> %%endmacro%% ca/fk/co2/htmlBuilder.hwt ca/navi/include.html ca/htmlBuilderHeader.hwt ca/htmlBuilderBody.hwt %%macro htmlBuilder%% %%htmlBuilderHead%% %%htmlBuilderBody %%endmacro%% 7 %%macro htmlBuilderBody%% <BODY> <SERVER>writeln(layout.navi_left());</SERVER> %%applicationBody%% </BODY> %%endmacro%% 8 Abbildung 5.6: Feinkonzept der Requestabarbeitung. 108 HTML-Page 2 URL initiated Request 5 PROJEKT CO2 5.3 STRUKTUR UND REQUESTABARBEITUNG Files ein und beginnt gleich mit dem wichtigsten: ca/fk/co2/include.hwt. Dieses File umfasst alle für die Applikation wichtigen Include-Anweisungen. ❸ Neben dem Default-Include“ der hwlib werden alle JavaScript Source-Files der ” CO2-Objekte eingebunden und dadurch vom Interpreter geparst. ❹ Durch das Einbinden des Files ca/global.hwt werden explizit Objekte ausgehend von den URL-kodierten Variablen erzeugt. Zu diesen Objekten gehören: • currentUrlObject: Kapselt die aktuelle URL des Requests. • currentHWObject: Das aktuell angeforderte Objekt wird über den ObjektGenerator erzeugt. Im Falle von ‘Vorgang A’ wird eine Instanz von der Klasse co2_Vorgang generiert. • layout: Ein für die Darstellung wichtiges Objekt, das festlegt welche Style Sheets zur Verwendung kommen, ausgehend von der Unterscheidung zwischen VIP und CO2. Das File ca/fk/co2/applicationBody.hwt definiert das Makro applicationBody und das File ca/fk/co2/htmlBuilder.hwt definiert das Makro htmlBuilder, die beide in weiterer Folge aufgerufen werden. ❺ Neben den allgemeinen Includes werden noch zusätzliche Files für das ActionHandling benötigt. Das Template ca/fk/co2/action.hwt bindet alle dazu benötigten Action-Templates ein. Beginnend mit speziellen CO2-Actions über allgemeine CA-Actions bis zu den Actions der hwlib. Im Beispiel von ‘Vorgang A’ wird hier abhängig vom Wert der URL-kodierten Variable action eine Aktion abgearbeitet. Wurde keine spezielle Aktion angegeben, wird das angeforderte Objekt (‘Vorgang A’) nur dargestellt. ❻ Nach dem Einbinden von include.hwt und action.hwt wird abschließend das Makro htmlBuilder aufgerufen. Dieses Makro baut aus den Vorgaben des Requests eine vollständige HTML-Seite zusammen. Der HTML-Head wird dabei durch das Makro htmlBuilderHead und der BODY durch das Makro htmlBuilderBody dynamisch erzeugt. ❼ Im Makro htmlBuilderBody erfolgt der Aufruf der Methode navi_left() des layout Objekte, die den HTML-Sourcecode für die Navigationsleiste der linken Sei- 109 5 PROJEKT CO2 5.4 ANMERKUNGEN ZUM PROJEKT te liefert. Das Kernstück der Darstellung wird anschließend durch den Aufruf des Makros applicationBody erzeugt. Dieses kleine Makro fordert das currentHWObj auf, sich einfach selbst darzustellen, das heißt die dafür notwendigen HTMLAnweisungen als String zu retournieren. Fast alle Kernobjekte der CO2-Applikation sind mit der Methode displayContent ausgestattet, die für diese Aufgabe zuständig ist. ❽ Nach Aufruf aller Makros und Funktionen wird als Ergebnis eine vollkommen dynamisch und auf Basis von Benutzeraktionen generierte HTML-Seite mittels HTTP an den Web-Browser zurückgeschickt, wo ‘Vorgang A’ wie gewünscht dargestellt werden kann. Die über acht Schritte durchgeführte Erklärung zeigt, dass recht aufwendige und komplizierte Mechanismen in Gang gesetzt werden müssen, um eine einzelne HTML-Seite zu generieren. Der große Vorteil in der dynamischen Technik ist im wesentlich geringeren Wartungsaufwand zu finden, den man durch statische HTML-Seiten nie erzielen kann. 5.4 Anmerkungen zum Projekt Die im Zuge der Projektarbeit gemachten Erfahrungen erweisen sich bereits jetzt als sehr wertvoll. Abschnitt 5.4.1 soll aber dennoch einige Probleme, die während des Projektverlaufes aufgetreten sind, diskutieren. Abschnitt 5.4.2 beschließt mit dem derzeitigen Status des CO2-Projektes dieses Kapitel. 5.4.1 Probleme während des Projektverlaufes In jedem Projekt treten unvermeidlich Probleme an den Tag, so auch im Zuge der Entwicklung der CO2-Applikation. Einige lösen sich von selbst und von anderen lernt man. Die wichtigsten Problempunkte sollen hier ganz kurz beschrieben werden: • Falsche Vorgaben: Die CA unterschätzte sehr grob das zu erwartende Zugriffsverhalten der Benutzer und die mit dem dynamischen Seitenaufbau verbundenen Verarbeitungszeiten des Servers. Das führte im Extremfall zu Seitenaufbauzeiten von über 2 Minuten! Die langen Aufbauzeiten sind dabei teilweise durch die Architektur der Applikation begründet, weil bei der Darstellung oft sehr komplexe Objektstrukturen dynamisch durchschritten werden müssen. 110 5 PROJEKT CO2 5.4 ANMERKUNGEN ZUM PROJEKT • Change Requests: Die von der CA deponierten Change Requests (CRs) wurden in den meisten Fällen mündlich durchgeführt. Das war insofern problematisch, da es fast unmöglich ist während eines Telefonats alle Details des CRs zu protokollieren. Für die Nachvollziehbarkeit des Projekts ist aber eine standardisierte Form der CR-Aufnahme unumgänglich und fordert eine schriftliche Formulierung des CRs von Seiten des Auftraggebers. • Zeitdruck: Da die Verantwortlichen der CA selbst unter Termindruck standen, übten sie diesen naturgemäß weiter auf uns aus. Das erforderte oft gesonderte Programmiereinheiten der Entwickler, um den Zeitplan halten zu können. Implementieren wird dabei zusehends zu einer Routineangelegenheit und die Fehlerhäufigkeit steigt wieder, ein Handicap mit der die Software-Entwicklung aber tagtäglich leben muss. • Unzureichendes Projektmanagement: Aufgrund des engen Zeitplans und vielleicht auch des unterbesetzten Entwicklerteams wurde Projektmanagement nur sehr am Rande betrieben. Die Koordination der Teilaufgaben funktionierte dennoch gut und die Integration der einzelnen Teile zu einem Ganzen ebenso10 . Nur der eigentliche Projektaufwand in Mannstunden bleibt einer groben Schätzung vorbehalten. 5.4.2 Derzeitiger Projektstatus Aufgrund massiver Performance-Probleme der Applikation, einerseits in den falschen quantitativen Vorgaben der CA und andererseits in Schwächen der Appliaktionsarchitektur begründet, ist eine Aufstockung der Prozessorleistung der einzige Weg, die teilweise horrenden Antwortzeiten auf ein erträgliches Maß zu verkürzen. Aus diesem Grund wird zur Zeit ein Ausbau der Server-Hardware erwogen, der natürlich mit intensiven Kosten verbunden ist. Das IICM hat im Herbst die Applikationsentwicklung des CO2-Projekts völlig abgeschlossen und den Sourcecode-Baum der CA übergeben. Kleine Korrekturen und Ausbauarbeiten werden aber am Institut noch immer durchgeführt. 10 Für die Integration wurde CVS erfolgreich eingesetzt. 111 6 Schlußfolgerungen und Ausblick So no client to install, no server to install, and access from anywhere. Smells like nirvanaa . Jim Seymour a Send Out for Software [Seymour, 1999b]. Das letzte Kapitel dieser Arbeit zieht ein Resumee aus den Erkenntnissen der theoretischen Untersuchung auf Basis einer fundierten Internet-Recherche und den Erfahrungen der praktischen Arbeit. Die praktischen Erfahrungen wurden einerseits durch die reale Erprobung der besprochenen Web-Technologien sowie ausgewählter Server und andererseits durch die erledigte Arbeit im Rahmen des CO2-Projekts gewonnen. Ein Ausblick auf zu erwartende Entwicklungen auf Grundlage momentaner Trends bei Web-Applikationen beschließt diese Arbeit. 6.1 Schlußfolgerungen Wachstum des Internet: Im Zeitraum November 1999 bis März 2000 wuchs die Anzahl der vom Netcraft Server Survey [Netcraft, 2000] berücksichtigten Web-Sites von 9.5 auf 13.1 Millionen. Mit dem Wissen, dass die Server des Intranet-Bereiches in diesen Zahlen gar nicht aufscheinen, kann auf die derzeit fast exponentielle Ausbreitungsgeschwindigkeit des Internet geschlossen werden. Die Auswirkungen dieses Booms, Hypes oder wie auch immer man es nennen mag, werden tagtäglich an immer stärker veränderten Gesellschafts- und Geschäftsregeln sichtbar. Als Randbemerkung soll hier noch angeführt werden, dass sich seit Jänner 2000 bereits mehr als eine Milliarde [Inktomi, 2000] Seiten im Web befinden. 112 6 SCHLUSSFOLGERUNGEN 6.1 SCHLUSSFOLGERUNGEN Qualitätskriterien einer Web-Applikation: Die Qualitäts- sind gleichzeitig die Erfolgskriterien der Web-Applikation. Das spiegelt sich inbesondere bei e-Commerce Unternehmen wieder, bei denen das Geschäftspotential oft ausschließlich in der Web-Site steckt1 . Im Verlauf des CO2-Projekts haben sich die drei folgenden Kriterien als besonders entscheidend erwiesen: • Response Time: Wie bereits in Abschnitt 2.1.3 beschrieben, ist die Antwortzeit das wichtigste Kriterium für den Benutzer und damit für die Akzeptanz und den Erfolg einer web-basierenden Applikation. 10 Sekunden ist das oberste Zeitlimit, um nicht die Aufmerksamkeit des Benutzers zu verlieren [Nielsen, 2000a]. Die aus dem CO2-Projekt (Abschnitt 5) gewonnenen Erfahrungen verstärken auch aus praktischer Sicht die Bedeutung dieses Kriteriums. In diesem Zusammenhang fordert Jakob Nielsen auch vorhersagbare Antwortzeiten, die von Session zu Session nicht sehr stark variieren. Damit fällt es dem Benutzer leichter, seine Arbeitsweise an die Applikation anzupassen [Nielsen, 2000a]. • Skalierbarkeit: Die Entwicklung von auftretenden Benutzungsmustern einer WebApplikation kann nur sehr schwer vorausgesagt werden. Sicher ist allerdings, dass sich die Belastung der Applikation schlagartig ändern kann [Baum, 1999]. Ist man für diese Eventualität nicht entsprechend gerüstet, kann ein erhöht auftretender Zugriff die ganze Web-Applikation in die Knie zwingen, wie es beispielsweise Toys‘R‘us2 im November 1999 passiert ist [Carr, 2000]. Skalierbarkeit erweist sich vor allem für den Bereich des e-Business als sehr kritisch, da ein unerwarteter Ausfall eines Servers oder einer Applikation zu erheblichen finanziellen Verlusten führen kann. Die Untersuchung der Server-Software in dieser Arbeit zeigte aber deutlich, dass die Hersteller ein erhöhtes Augenmerk auf die Skalierungsmöglichkeiten ihrer Server legen. Dennoch muss die Architektur der Web-Applikation vordringlich skalierbar sein, um die bereitgestellten Möglichkeiten des Servers nutzen zu können. Diese Eigenschaft wurde auch in Abschnitt 2.2 angesprochen und ist ein Problempunkt des CO2-Projekts. Werkzeuge für automatisiertes Load oder Stress-Testing können bereits sehr realistische Szenarien der Benutzungsbelastung simulieren und dadurch die Belastungs1 2 Indeed, for e-commerce companies the site is the company“ [Nielsen, 2000a]. ” http://www.toysrus.com 113 6 SCHLUSSFOLGERUNGEN 6.1 SCHLUSSFOLGERUNGEN obergrenze3 einer Anwendung feststellen. Web-Applikation entwickeln sich zunehmend zu geschäfts-kritischen Systemen – und für geschäfts-kritische Systeme ist ein Test durch derartige Tools – WebLoad 4 als Beispiel – ein absolutes Muss, bevor sie online gehen. Damit können von Vornherein entsprechende Server-Kapazitäten für die Eventualität einer Überlastung eingeplant oder einfach die geforderte Lasttauglichkeit der Applikation überprüft werden. • Usability: Nach wie vor helfen Performance und Skalierbarkeit einer Web-Applikation nicht viel, wenn der Benutzer nur sehr mühsam mit der Bedienung zu Rande kommt. Allein klare und einfache Strukturen in puncto Seitenaufbau und Navigation versprechen den gewünschten Erfolg. Jacob Nielson bringt es auf den Punkt: Usability rules the web.“ [Nielsen, 2000a]. ” Eng mit dieser Thematik verwandt ist die Diskussion um die verwendete Informationsarchitektur [Rosenfeld & Morville, 1998], die bestimmt in welcher Form und Struktur dem Benutzer die angebotene Information präsentiert und wie vom Benutzer erhaltene Information wieder am Server abgelegt wird. Der HWIS – in Abschnitt 3 beschrieben – folgt einer streng hierarchischen Architektur, die dem Server inherent gegeben ist. Eine gute Lösung, da sich der User intuitiv an Hierarchien orientiert und diese als vertraut empfindet. Klare Strukturen, wie sie der HWIS vorgibt, helfen dem Benutzer [Nielsen, 2000b], sich im Informationsraum zurecht zu finden, beim Apache hingegen – in Abschnitt 4 beschrieben – liegt es am Appliaktionsentwickler, eine entsprechende Architektur am Server zu verwirklichen. Auswahl der Server-Software und Web-Technologie: Die Auswahl der Server-Software ist auch immer indirekt eine Auswahl der Web-Technologie und das gilt ebenso für den umgekehrten Fall. Tatsache ist, dass es derzeit ein sehr breites und vielfältiges Spektrum an Server-Software am Markt gibt (siehe Abschnitt 2.2.1). Eine one-size-fits-all“-Lösung [Desal et al., 1999] für das Anforderungs” profil einer Web-Applikation verwehrt sich aufgrund der inherenten heterogenen Struktur dieser Applikationsform a priori. Die Strategie der Auswahl besteht nun im Wesentlichen darin, die Requirements der Applikation mit den Leistungsprofilen der Server zu verglei3 4 Im Englischen: The volume at which the system breaks down.“ ” http://www.radview.com/products/wl 114 6 SCHLUSSFOLGERUNGEN 6.1 SCHLUSSFOLGERUNGEN chen und sich auf die Unterstützung weit verbreiteter, offener und starker Technologien zu konzentrieren. Damit fällt die Wahl auf ein Produkt, das am besten den geforderten Ansprüchen gerecht werden kann. Aus der Untersuchung des Server-Spektrums ergaben sich weitere für die Auswahl relevante Punkte: 1. Java-zentriert: Das Gros der untersuchten Application Server unterstützt Java als Programmiersprache. Darüber hinaus hat SUN eine Java-basierende Gesamtlösung für Web-Applikationen entwickelt, die aus ihrer Sicht aus einem Zusammenspiel von JavaServer Pages, HTML (später XML), Applets, Servlets und BeanKomponenten aufgebaut sind. In Abschnitt 2.3.7 wird ab Seite 58 das zugrunde liegende Konzept derartiger Web-Applikation dem Leser vorgestellt. 2. Thin-Client: Der Begriff Thin-Client“ wird von einigen Server-Herstellern wie ” etwa Oracle [OAS, 1998] als Synonym für eine Client-Maschine mit Web-Browser und Java Virtual Machine verwendet. Das kann Verwirrung stiften, da Thin” Client“ einerseits für eine speziell klein gehaltene Client-Applikation und andererseits für einen Network Computer, kurz NC5 , als Ganzes stehen kann. Gemeinsam ist ihnen nur, dass die Applikationslogik zum größten Teil am Server zu finden ist. Siehe [Wĕbopēdia, 2000]. 3. Hyperwave Information Server: Der HWIS bietet aufgrund der inherenten hierarchischen Server-Struktur klare Vorteile im Umgang mit großen Datenbestände. Es ist festzuhalten, dass der HWIS verstärkt für die Applikationsentwicklung im Bereich des Intranet konzipiert wird und sich besonders mit Windowssystemen kooperativ zeigt. Für den Entwickler erweist sich vor allem das mit der Version 5 eingeführte Konzept der Dokument-Klassen als sehr angenehme Entwicklungshilfe für Applikationen. Die in Abschnitt 5.2 beschriebene hwlib erfüllte im CO2Projekt einen sehr ähnlichen Zweck und kann als Vorstufe von Dokument-Klassen gesehen werden. JavaScript wird in der Applikationsentwicklung voraussichtlich PLACE à la longue in den Hintergrund drängen. 4. Apache HTTP Server: Als konzeptionell konträres Beispiel zum HWIS, wurde der Apache HTTP Server aufgrund seiner enormen Popularität und Verbreitung näher untersucht. Allein im Zeitraum dieser Arbeit (November 1999 bis März 2000) 5 Besitzt keine Harddisk im Unterschied zu einem Fat-Client. 115 6 SCHLUSSFOLGERUNGEN 6.2 AUSBLICK stieg der relative Marktanteil des Apache von 54.81 auf 60.05 Prozent, das entspricht einem Zuwachs von etwa 3 Millionen Web-Sites zufolge des Netcraft Server Survey [Netcraft, 2000]. Das Aushängeschild der Open-Source-Gemeinde hat sich auch im Einsatz als Testplattform für die praktische Erprobung der untersuchten Web-Technologien als sehr zuverlässig und stabil erwiesen. Die Apache Software Foundation6 versucht neue und erfolgversprechende Technologien so früh wie möglich in ihrer Arbeit zu unterstützen, das beweisen eigene Projekte für XML (Apache XML Project bestehend aus: Xerces, Xalan, Cocoon, FOP ) oder für JSP und Servlets (Jakarta). Ein wesentliches Erfolgskriterium für den Apache bilden populäre ASF-unabhängige Projekte und Entwicklungen wie PHP (www.php3.net), Zend (www.zend.org) und Midgard (www. midgard-project.org). Die Entwicklergemeinde arbeitet derzeit zügig Richtung Version 2.0 des Apache HTTP Server. Persönliche Schlußfolgerungen: Diese Arbeit hat besonders gezeigt, dass es nur schwer möglich ist, in der Thematik Web” Applikation“ einen Gesamtüberblick zu bekommen. Das begründet sich hauptsächlich durch die enorme Angebotspalette an Software und Technologien, deren gewissenhafter Einzeltest Jahre dauern würde. Durch die praktische Arbeit mit zwei Servern vollkommen unterschiedlicher Konzeption und Marktposition wurde ein Leitsatz deutlich: Berücksichtige immer alternative, zuweilen freie Server oder Technologien, versichere Dich aber, ob sie für den speziellen Fall auch wirklich geeignet sind. 6.2 Ausblick CO2: Die Entwicklungsarbeit des CO2-Projektes ist für das IICM abgeschlossen. Die einzige Möglichkeit die Performance des Systems im jetztigen Zustand zu verbessern, ist in leistungsstärkere Hardware zu investieren. Für diese Option untersuchten die Projektverantwortlichen der CA bereits die Applikation auf einem performanten Test-System der Firma SUN in Deutschland. Doch trotz Aufrüstung des Servers und der damit ver6 http://www.apache.org 116 6 SCHLUSSFOLGERUNGEN 6.2 AUSBLICK bundenen annehmbaren Applikationsgeschwindigkeit kann nur der Praxiseinsatz zeigen, ob letztendlich CO2 im Stande ist, die geforderten Ziele zu erreichen. Allgemein: In Zukunft werden Web-Applikationen noch stärker mit Funktionalität ausgestattet sein, die bis dato Desktop-Applikationen vorbehalten war. Besonders bereits zu bestaunende web-basierende Office-Anwendungen7 [BusinessWire, 2000] verdeutlichen eine weitere Entwicklungstendenz: Webtop statt Desktop. Web-Applikationen der zweiten Generation sollen Textverarbeitung und Tabellenkalkulation beherrschen. Als Nebeneffekt werden sogenannte Application Service Providers (kurz ASP) diese Dienste oder Applikationen netzwerk-basierend an Unternehmungen auf Vertragsbasis bereitstellen. Der Trend geht bereits jetzt in diese Richtung mit der Motivation sich die Installation und Integration der Sofware/Hardware zu ersparen, sowie die Anzahl der Lizenzen8 . Sofern nicht spezialisierte Thin-Clints, wie sie etwa von Citrix9 seit einiger Zeit angeboten werden, als Systembasis dienen, ist der Web-Browser das unumstrittene Nummer eins User-Interface der Web-Applikation. Doch durch den zu erwartenden Trend erfordern Web-Applikationen immer größere Funktionalität vom Web-Browser – Funktionalität, die schon teilweise im Betriebssystem zu finden ist. Als Konsequenz müßte der Web-Browser allmählich selbst zum Betriebssystem werden, um die gestellten Anforderungen erfüllen zu können [Elrick, 1998]. In puncto Web-Technologien tendiert XML, leise die Rolle eines kommenden Schlüsselspielers (im Engl.: Key Player ) einzunehmen. Namhafte Software-Firmen, darunter Microsoft und SUN, unterstützen die Bestrebungen des W3C10 , XML als mächtigen freien Web-Standard zu etablieren. Es wir bereits spekuliert, ob nicht durch XML und XSLT11 ein neues Programmierparadigma geschaffen wird [Rath, 1999]. Anwendbar können diese vielversprechenden Trends aber nur dann werden, wenn der Flaschenhals Verbindungsbandbreite einmal bis ins Wohnzimmer des Normalverbrauchers geöffnet wird. Erst dann kann sich Sun’s alter Slogan The Network is the computer“ ” allmählich bewahrheiten. Seien wir dennoch gespannt, was alles auf uns zukommt. 7 ThinkFree Office (www.thinkfree.com) ist sogar vollkommen kompatibel zu Microsoft Office. Nicht jeder arbeitet jederzeit mit seiner Textverarbeitung. 9 Applikationen über Citrix-Clients (http://www.citrix.com) sind noch sehr langsam [Herel, 1999]. 10 http://www.w3.org/XML 11 eXtensible Style Language Transformations. http://www.w3.org/TR/1999/REC-xslt-19991116 8 117 Abkürzungen AJP . . . . . . . . . . Apache JServ Protocol API . . . . . . . . . . . Application Programming Interface APXS . . . . . . . . APache eXtenSion Tool ASF . . . . . . . . . . Apache Software Foundation ASP . . . . . . . . . . Active Server Pages ASP . . . . . . . . . . Application Service Provider CF . . . . . . . . . . . . Cold Fusion CGI . . . . . . . . . . Common Gatway Interface COM . . . . . . . . . Component Object Model CORBA . . . . . . Common Object Request Broker Architecture CSJS . . . . . . . . . Client-Side JavaScript DBD. . . . . . . . . . DataBase Driver DBI. . . . . . . . . . . DataBase Interface DCOM . . . . . . . Distributed Component Object Model DHTML . . . . . Dynamic HTML DSO . . . . . . . . . . Dynamic Shared Object EJB . . . . . . . . . . Enterprise JavaBean 118 6 SCHLUSSFOLGERUNGEN 6.2 AUSBLICK GPL . . . . . . . . . . General Public License HG-CSP . . . . . Hyper-G Client Server Protocol HTML. . . . . . . . HyperText Markup Language HTTP . . . . . . . . HyperText Transfer Protocol IDE . . . . . . . . . . . Integrated Development Environment IIOP . . . . . . . . . . Internet Inter-ORB Protocol IMAP . . . . . . . . Internet Message Access Protocol ISAPI . . . . . . . . Internet Server API JAR . . . . . . . . . . Java Archive JDBC . . . . . . . . Java DataBase Connectivity JDK . . . . . . . . . . Java Development Kit JSDK. . . . . . . . . Java Servlet Development Kit JSP . . . . . . . . . . . JavaServer Pages JVM . . . . . . . . . . Java Virtual Machine LAMP . . . . . . . . Linux Apache MySQL PHP LDAP . . . . . . . . Lightweight Directory Access Protocol LWP . . . . . . . . . . Library for Web Programming MIME . . . . . . . . Multipurpose Internet Mail Extensions NCSA . . . . . . . . National Center of Super Computing NNTP . . . . . . . . Network News Transfer Protocol NSAPI . . . . . . . Netscape Server API ODBC . . . . . . . . Open DataBase Connectivity 119 6 SCHLUSSFOLGERUNGEN 6.2 AUSBLICK ODMA . . . . . . . Open Document Management API OOP . . . . . . . . . . Object-Oriented Programming ORB . . . . . . . . . . Object Request Broker PDF . . . . . . . . . . Portable Document Format PHP . . . . . . . . . . PHP: Hypertext Preprocessor POP . . . . . . . . . . Post Office Protocol RDBMS . . . . . . Relational DataBase Management System RFC . . . . . . . . . . Request For Comments RMI . . . . . . . . . . Remote Method Invocation RXML . . . . . . . RoXen Macro Language SNMP . . . . . . . . Simple Network Management Protocol SQL . . . . . . . . . . Structured Query Language SSI. . . . . . . . . . . . Server-Side Includes SSJS . . . . . . . . . . Server-Side JavaScript SSL . . . . . . . . . . . Secure Socket Layer Tcl . . . . . . . . . . . . Tool Command Language TCP . . . . . . . . . . Transmission Control Protcol UML . . . . . . . . . Uniform Modelling Language URL . . . . . . . . . . Uniform Resource Locator WAIS. . . . . . . . . Wide Area Information Servers WAR . . . . . . . . . Web Archive WWW . . . . . . . World Wide Web 120 6 SCHLUSSFOLGERUNGEN 6.2 AUSBLICK XML . . . . . . . . . eXtensible Markup Language XSLT . . . . . . . . . eXtensible Style Language Transformations 121 Listings 2.1 hello.pl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.2 Products.pl DBI und MySQL . . . . . . . . . . . . . . . . . . . . . . . . 40 2.3 HelloWorld.pl mit FastCGI . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.4 HelloWorld.php3 2.5 telefon.php3 PHP und MySQL . . . . . . . . . . . . . . . . . . . . . . . 46 2.6 hello.html mit Server-Side JavaScript. . . . . . . . . . . . . . . . . . . . 49 2.7 Hello, ein vom HttpServlet abgeleitetes Java Servlet . . . . . . . . . . . 53 2.8 HelloWorld.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.9 Bean.jsp JavaBeans und JSP . . . . . . . . . . . . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.10 JSPMySqlBean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.1 .db.contr.rc Grundkonfiguration . . . . . . . . . . . . . . . . . . . . . 71 4.1 Ausschnitt aus httpd.conf . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.2 Konfiguration von mod_perl . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.3 Konfiguration von mod_php3 . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.4 Auszug aus php3.ini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.1 Basisklasse Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 5.2 Abgeleitete Klasse Rectangle . . . . . . . . . . . . . . . . . . . . . . . . . 100 122 Literaturverzeichnis Alan O. Freier, A. O.; P. Karlton & P. C. Kocher (1996): The SSL Protocol, Version 3.0, Internet Draft. http://www.netscape.com/eng/ssl3. Andrews, K.; F. Kappe & H. Maurer (1994): The Hyper-G Network Information System. ftp://ftp.iicm.edu/pub/papers/dms94.pdf. ApacheDoc (1999): Apache 1.3 User’s Guide. http://www.apache.org/docs. Baum, D. (1999): Scalable Web Apps, Informationweek Online. http://www. informationweek.com/722/22iuweb.htm. Berners-Lee; Fielding & Frystyk (1996): RFC 1945 Hypertext Transfer Protocol – HTTP/1.0. http://sunsite.auc.dk/RFC/rfc/rfc1945.html. Berners-Lee; Masinter & McCahill (1994): RFC 1738 Uniform Resource Locators (URL). http://sunsite.auc.dk/RFC/rfc/rfc1738.html. Berst, J. (1998): Why Your Desktop Applications Will Soon Disappear. http://www. zdnet.com/anchordesk/story/story_2881.html. Brooks, F. P. (1986): ware Engineering. No Silver Bullet – Essence and Accidents of Soft- http://www.virtualschool.edu/mon/SoftwareEngineering/ BrooksNoSilverBull\%et.html. BusinessWire (2000): Thinkfree.Com Paves The Way from The Desktop to The Webtop with Free, Web-Based Office Solutions. http://industry.java.sun.com/ javanews/stories/print/0,1797,22670,00.htm\%l. Campione, M. & c. Wallrath (1999): The Java Tutorial, Second Edition. 123 Literaturverzeichnis Carr, N. (2000): The Myth of Scalability. http://www.thestandard.com/article/ display/0,1151,8532,00.html. Crypto (1998): Introduction to Public-Key Cryptography. http://developer. netscape.com/docs/manuals/security/pkin/contents.htm. csjsGuide (1999): Client-Side JavaScript Guide Version 1.3. http://developer. netscape.com/docs/manuals/js/client/jsguide. Desal, G.; J. Fenner; J. Patel & M. Schenecker (1999): Web Application Servers are Here To Stay, Informationweek Online. http://www.informationweek.com/726/ prapp.htm. E-Soft (2000): Web Survey. http://www.e-softinc.com/survey. Eilebrecht, L. (1999): Apache Web-Server. mitp, 2. Aufl. Elrick, J. (1998): But isn’t a browser a desktop application? http://www.zdnet. com/anchordesk/talkback/talkback_142116.html. Engelschall, R. S. (1998): Apache 1.3 Dynamic Shared Object (DSO) Support. http://www.apache.org/docs/dso.html. Fielding; Mogul; Frystyk; Masinter; Leach & Berners-Lee (1999): RFC 2616 Hypertext Transfer Protocol – HTTP/1.1. http://sunsite.auc.dk/RFC/rfc/ rfc2616.html. Flanagan, D. (1997): JavaScript: The Definitive Guide. O’Reilly, 2. Aufl. Freed & Borenstein (1996): RFC 2045 Multipurpose Internet Mail Extensions (MIME). http://sunsite.auc.dk/RFC/rfc/rfc2045.html. GPL (1999): GNU General Public License. http://www.gnu.org/copyleft/gpl.html. Haberstadt, A. (1998): Using Apache JServ 1.0b1. http://www.servletcentral. com/1999-01/jserv.dchtml. Herel, H. (1999): Productivity Applications. stories/reviews/0,6755,2344659,00.html. 124 http://www.zdnet.com/pcmag/ Literaturverzeichnis HwisAdmin (1999): Hyperwave Administrator’s Guide - Hyperwave Information Server Version 5.1, Bd. 3. HwisNtInstall (1999): Hyperwave Installation Guide for Windows NT, Bd. 4. HwisPlace (1999): Hyperwave PLACE and Server API - Hyperwave Information Server Version 5.1, Bd. 4. HwisPlaceWS (1999): Hyperwave PLACE Workshop- Hyperwave Information Server Version 5.1, Bd. 4. HwisProg (1999): Hyperwave Programmer’s Guide - Hyperwave Information Server Version 5.1, Bd. 4. HwisUnInstall (1999): Hyperwave Installation Guide for UNIX, Bd. 4. HwisUser (1999): Hyperwave User’s Guide - Hyperwave Information Server Version 5.1, Bd. 2. Icom (2000): http://www.internet.com. Inktomi (2000): WebMap. http://www.inktomi.com/webmap. JServSpec2.2 (1999): Java Servlet Specification v2.2. http://java.sun.com/ products/servlet/2.2/. jsOOP (1997): Object Hierarchy and Inheritance in JavaScript. http://developer. netscape.com/docs/manuals/communicator/jsobj/contents.\%htm. JSPSpec1.1 (1999): JavaServer Pages 1.1 Specification. http://java.sun.com/ products/jsp/download.html. Kappe, F. (1991): Aspects of a Modern Multi-Media Information System. ftp://ftp. iicm.edu/pub/papers/report308.pdf. Kappe, F. (1999): Hyperwave Information Server - Technical White Paper. http: //www.hyperwave.at/publish/downloads/twp5.pdf. Kappe, F.; H. Maurer & I. Tomek (1991): Hyper-G Specification of Requirements. ftp://ftp.iicm.edu/pub/papers/report284.pdf. 125 Literaturverzeichnis Krause, R. & B. L. Hecht (2000): Six Server Segments: Guidelines for Categorizing Servers. http://serverwatch.internet.com/articles/serve_cat/server_cat_a. html. Laurie, B. & P. Laurie (1999): Apache: The Definitive Guide. O’Reilly, 2. Aufl. Maurer, H. (1996): HYPERWAVE - The next Generation Web Solution. Addison Wesley Longman Limited. Mazzocchi, S. & P. Fumagalli (1998): Advanced Apache JServ Techniques. http: //java.apache.org/jserv/papers/techniques.pdf. Netcraft (2000): Server Survey. http://www.netcraft.com. Netscape (2000): Netscape Application Server - White Paper. http://www.iplanet. com/products/whitepaper/whitepaper_3.html. Networds (2000): Das Internet-Wörterbuch. http://www.networds.de. Niederst, J. (1999): Web Design in a Nutshell. O’Reilly. Nielsen, J. (1997): The need for Speed. http://www.useit.com/alertbox/9703a. html. Nielsen, J. (2000a): Designing Web Usability: The Practice of Simplicity. New Riders Publishing. Nielsen, J. (2000b): Is Navigation Useful? http://www.useit.com/alertbox/ 20000109.html. OAS (1998): Oracle Application Server 4.0 White Paper. http://technet.oracle. com/products/oas/pdf/oas40wp.pdf. OpenMarket (1996): FastCGI: A High-Performance Web Server Interface. http: //www.fastcgi.com/fcgi-devkit-2.1/doc/fastcgi-whitepaper/fastcgi.h\%tm. Oracle (1999): Understanding the Benefits of Oracle Application Server in 3- Tier Computing. http://technet.oracle.com/products/oas/pdf/benefits_of_ 3_tier.pdf. 126 Literaturverzeichnis Rath, H. H. (1999): Klein, aber fein. iX . Raymond, E. S. (1999): The Cathedral and the Bazaar. http://www.tuxedo.org/ ~esr/writings/cathedral-bazaar. Reeg, C. (1999): Datenbank, mySQL und PHP. http://www.jugendnetz-ffm.de/ privat/reeg. Reynolds & Postel (1994): RFC 1700 Assigned Numbers. http://sunsite.auc.dk/ RFC/rfc/rfc1700.html. Ricciuti, M. (1998): Application server eludes definiton, CNET News.com. http: //www.informationweek.com/726/prapp.htm. Rice, V. (1999): Why it pays to think thin. http://www.zdnet.co.uk/itweek/brief/ 1999/44/client/01.html. Rosenfeld, L. & P. Morville (1998): Information Architecture for the World Wide Web. O’Reilly. Saccoccio, R. (1999): FastCGI - Presentation Slides for O’reilly’s Open Source ’99 Conference. http://www.fastcgi.com/docs/OpenSource99/FastCGI.pdf. Schmaranz, K. (2000): Softwareentwicklung in Inter- und Intranet Umgebungen. ftp: //ftp2.iicm.edu/pub/kschmar/Internet_Programming_WS_1999_2000.pdf. Seymour, J. (1999a): Ready for Web Apps? http://www.zdnet.com/pcmag/stories/ reviews/0,6755,2344642,00.html. Seymour, J. (1999b): Send Out for Software. http://www.zdnet.com/pcmag/ stories/reviews/1,6755,2348942,00.html. ssjsGuide (1999): Server-Side JavaScript Guide Version 4.0. http://developer. netscape.com/docs/manuals/ssjs/1_4/ssjspdf.zip. SSL-Intro (1998): Introduction to SSL. http://developer.netscape.com/docs/ manuals/security/sslin/contents.htm. Stein, L. D. (1999): Is CGI Dead? http://www.webtechniques.com/archives/1999/ 04/webm. 127 Literaturverzeichnis W3C (1999): HyperText Markup Language. http://www.w3.org/MarkUp. White, J. (1999): PHP: A silent killer. http://www.devshed.com/Talk/BrainDump/ PHP. Wright, G. (1999): What is an Application Server? http://webreview.com/pub/ sections/appserver/index2.html. Wĕbopēdia (2000): http://webopedia.internet.com. Wurzenberger, G. (1999): hwlib Reference Guide 1.0. Xanadu (2000): Project Xanadu - The Original Hypertext Project. http://www. xanadu.net. Yumul, R. M. (1998): Getting Started with Java Servlets using Apache JServ. http: //www.devshed.com/Server_Side/JServ/Started. Zhang, Y. (1999): Setting Up Database Driven Websites. http://www.devshed.com/ Server_Side/Administration/Database. 128 A Attribute der perfekten Web-Applikation Bei der Studie verschiedenster White Papers, technischer Spezifikationen und Referenzen im Bereich Web-Technologien und Server-Software während dieser Arbeit, wurde eine große Anzahl an Attributen von Web-Applikationen gefunden. Fallweise kennt der Einfallsreichtum diverser Dokumente keine Grenzen und läßt den Einfluß einer offensiven Marketing-Strategie erkennen. Würde eine Web-Applikation alle unten angeführten Attribute besitzen, könnte man sie zu Recht als perfekt bezeichnen. :-) Die perfekte Web-Applikation ist: The perfect Web Application is: sicher, skalierbar, secure, scalable, schnell, anwenderfreundlich, fast, user-friendly, intuitiv, wiederverwendbar, intuitive, reusable, flexibel, transparent, flexible, transparent, umfassend, plattformübergreifend, comprehensive, cross-platform, dynamisch, zuverlässig, dynamic, reliable, einfach, modular, simple, modular, effizient, stabil, efficient, stable, handhabbar, verteilt, manageable, distributed, robust, persistent, robust, persistent, kollaborativ, mächtig, collaborative, powerful, intelligent, leicht verwendbar, intelligent, easy to use, portierbar, erweiterbar, portable, extendable, fehlerfrei, konsistent error-free, consistent und zu guter Letzt billig. and last but not least cheap. 129 B e-Manie Bei der Recherche nach typischen Anwendungsbereichen für Web-Applikationen ließen sich aus ähnlichen Gründen wie in Anhang A vermehrt Begriffe mit einem e“1 als ” Anfangsbuchstaben, gefolgt von einem Bindestrich, finden. Einerseits überrascht vom massiven Auftreten und andererseits fasziniert vom Einfallsreichtum und der teilweisen Bedeutungslosigkeit dieser Wörter, sollen hier die gefundenen e“-Begriffe ihren Platz ” finden. Anmerkungen sollen dabei zum besseren Verständnis dienen. ;-) e-business Geschäfte zwischen Kunden und Lieferanten werden rein über das Web/Internet abgewickelt. e-biz Kurzform für e-business. e-consultant Ein Berater für e-commerce. e-conomy e-commerce Steht für Economy“, und indirekt für e-business. ” Verkauf von Waren über das Web. e-journal Ein elektronisches Journal. e-loan Kreditgeschäfte über das Web, z.B.: www.e-loan.com. e-law Rechtliche Belange im Web/Internet. e-money e-services Elektronische Geld, auch Digital Cash“. ” Umfasst e-business u. e-commerce, www.hp.com/e-services. e-solutions Lösungen für e-commerce. e-stamp Postgebühren übers Web bezahlen, z.B: www.e-stamp.com Und vieles mehr: e-power, e-answers, e-notes, e-print, e-conference, e-math, ebomb, e-rails, e-zine, e-toys, e-soccer, e-trader, e-rate, e-mail, esports, e-card, e-pc, e-news, e-education, e-tutor, e-industry, esignatures, e-marketing, e-speak, e-show and e-form. 1 Steht in den meisten Begriffen und Akronymen für electronic“. ” 130