VERWENDETE METHODEN UND WERKZEUGE | KAPITEL 4 4. Verwendete Methoden und Werkzeuge In diesem Kapitel werden die verschiedenen Methoden und Werkzeuge vorgestellt, die bei der Realisierung der Mediathek eingesetzt wurden. Zuerst werden die Grundlagen und einige Technologien für Internet-Anwendungen erläutert. Im zweiten Abschnitt werden wichtige Programmierkonzepte umrissen und im letzten Abschnitt gehen wir auf die Werkzeuge ein, die wir für die Umsetzung der Mediathek verwendet haben. 4.1 Grundlagen und Architektur von Webanwendungen Das World Wide Web (WWW) hat sich in den letzten Jahren von der einfachen Darstellung statischer Textseiten zu einem Medium für komplexe Anwendungen entwickelt. Neben reinen Textinhalten können heutzutage Grafiken, Musik bis hin zu Videodaten über das Internet im WWW übertragen werden. Webanwendungen sind in der Lage, dynamische Inhalte mittels Datenbanksystemen zu erzeugen und interaktive Webseiten auf unterschiedlichen Plattformen wie Mobiltelefone oder PCs darzustellen. Die Anwendungspalette reicht dabei von einfachen Informationsangeboten bis hin zum interaktiven Online-Fernsehen. Das folgende Kapitel stellt einige wichtige Grundlagen für alle Webanwendungen vor. 4.1.1 Internetprotokolle Im Grunde genommen ist das Internet ein gigantisches Netzwerk aus unzähligen Computern. Damit innerhalb des Netzwerkes Daten übertragen werden können, müssen alle Computer bestimmte Regeln einhalten. Diese Regeln definieren Spezifikationen und Verhaltensweisen für die Kommunikation zwischen den Computern und werden im Allgemeinen als Protokolle bezeichnet. Grundlage für die Kommunikation in Rechnernetzwerken bildet das Anfang der achtziger Jahre entwickelte OSI-Modell 24. Das Modell besteht aus sieben eigenständigen Schichten, welche die verschiedenen Aufgaben in der 24 engl. für Open Systems Interconnection Reference Model 56 VERWENDETE METHODEN UND WERKZEUGE | KAPITEL 4 Kommunikation unabhängig voneinander erfüllen können. Die Schichten sind hierarchisch aufgebaut, d.h. jede Schicht bietet ihre Dienste der darüber liegenden Schicht an, während sie gleichzeitig die unter ihr liegende Schicht zur Ausführung benötigt. Die Verbindung zwischen den Protokollen der einzelnen Schichten nennt man auch Protokollstapel25. Applikationsschicht HTTP,FTP,SMTP Darstellungsschicht SSL Sitzungsschicht Transportschicht TCP, UDP Vermittlungsschicht IP Sicherungsschicht Ethernet, MAC, PPP Bitübertragungsschicht Ethernet-Basis-Signale, ISDN Abbildung a4.1: OSI Modell Zur Beschreibung der Kommunikation von Webanwendungen wird allerdings meistens das TCP/IP-Referenzmodell verwendet. Das Modell ist in vier Schichten unterteilt: TCP/IP Schicht Entsprechende OSI Schichten Beispiel Anwendungsschicht Applikations-, Darstellungs-, und HTTP, SMTP Sitzungsschicht Transportschicht Transportschicht TCP / UDP Internetschicht Vermittlungsschicht IP Netzwerkschicht Sicherungs- und Bitübertragungsschicht Tabelle t4.1: TCP/IP Referenzmodell Anwendungsschicht In der Anwendungsschicht liegen alle Protokolle, die mit Anwendungsprogrammen zusammenarbeiten, um das Netzwerk für den 25 Englisch: protocol stack 57 VERWENDETE METHODEN UND WERKZEUGE | KAPITEL 4 Austausch anwendungsspezifischer Daten zu nutzen. Dazu zählt zum Beispiel das Simple Mail Transfer Protocol (SMTP), welches zum Versenden von Emails verwendet wird. Das bekannteste Protokoll innerhalb der Anwendungsschicht ist das Hypertext Transfer Protocol (HTTP). Es kommt bei der Übermittlung von Webseiten, die im HTML-Format (Hypertext Markup Language) beschrieben werden, zum Einsatz. HTTP setzt auf das unter ihm liegende Transmission Control Protocol (TCP)26 auf und arbeitet nach dem Anfrage-Antwort Prinzip. Das heißt, ein Server antwortet nur dann einem Client, wenn dieser vorher eine Anfrage gestellt hat. Transportschicht Die Transportschicht ist für die Verbindung zwischen zwei Rechnern im Netzwerk zuständig. Die wichtigsten Protokolle dieser Schicht sind das Transmission Control Protocol (TCP) und das User Datagramm Protocol (UDP). Während TCP eine gesicherte Verbindung zwischen den Rechnern im Netzwerk herstellt, um eine möglichst fehlerfreie Datenübertragung zu gewährleisten, verzichtet UDP auf die Sicherung des Datenstromes zugunsten einer besseren Ausnutzung der vorhandenen Bandbreite. Internetschicht In der Internetschicht wird die Vermittlung von einzelnen Datenpaketen über eine Punkt-zu-Punkt-Verbindung an den Empfänger geregelt. Die Hauptaufgabe ist es, das nächste Ziel eines Datenpakets zu ermitteln und dieses dorthin weiterzuleiten. Um Rechner im Netzwerk eindeutig zu identifizieren und Datenpakete an sie zu verschicken, wird das Internet Protocol (IP) verwendet. Es stellt einen verbindungslosen Paketauslieferungsdienst bereit, der weder die sichere Übertragung noch eine feste Reihenfolge der Übertragung von Datenpaketen garantiert. Netzwerkschicht Die Netzwerkschicht ist zwar im TCP/IP-Referenzmodell angesiedelt, jedoch enthält sie keine festen Protokolle aus der TCP/IP-Familie sondern lediglich Platzhalter, die je nach verwendetem Netzwerktyp ersetzt werden (z.B. Ethernet oder Token Ring). Hier wird die physikalische Kommunikation zwischen den Netzwerken geregelt. 26 Siehe auch Transportschicht 58 VERWENDETE METHODEN UND WERKZEUGE | KAPITEL 4 4.1.2 Client – Server im WWW Das World Wide Web ist ein Hypertext-System, das über das Internet abrufbar ist. Im allgemeinen Sprachgebrauch werden das WWW und das Internet mittlerweile gleichgesetzt, jedoch bietet das Internet auch noch andere Dienste wie z.B. Email die nichts mit dem WWW zu tun haben. Wie im vorherigen Kapitel erläutert, wird für die Kommunikation im WWW das HTTP als Übertragungsprotokoll verwendet. Möchte nun ein Benutzer eine Webseite im WWW betrachten, stellt sein Rechner (der Client) eine HTTP-Anfrage an den Computer (Host27), auf dem die Webseite gespeichert ist. Der Server28 wertet die Anfrage aus und schickt seinerseits eine Antwort zurück. Der Clientrechner kann die empfangene Nachricht, die z. B. Text, Bild, Audio, Video oder Applets29 enthalten kann, mit Hilfe eines WebBrowsers auf dem Bildschirm darstellen. Alle Nachrichten werden zur Übertragung in das einheitliche Multipurpose Internet Mail Extension Format (MIME)30 kodiert. Dateisystem Client Server Abbildung a4.2: Client - Server Kommunikation bei statischen Webseiten 27 Als Host (engl.: Wirt, Gastgeber) wird in der Informationstechnik ein Computer in einem Netzwerk bezeichnet, auf dem ein oder mehrere Server betrieben werden. URL: http://de.wikipedia.org/wiki/Host_%28Informationstechnik%29 , Stand: 19.6.2005 28 Ein Server ist ein Programm, welches auf die Kontaktaufnahme eines Client-Programmes wartet und nach Kontaktaufnahme mit diesem Nachrichten austauscht. URL: http://de.wikipedia.org/wiki/Server , Stand: 24.6.2005 29 Der Begriff Applet bedeutet soviel wie „kleine Applikation“. Verstanden wird darunter meist ein Java-Applet, ein kleines Computerprogramm, das in einem Web-Browser läuft und in der Programmiersprache Java geschrieben ist. URL: http://de.wikipedia.org/wiki/Applet , Stand: 18.6.2005 30 MIME ermöglicht es, zwischen Sender und Empfänger Informationen über den Typ der übermittelten Daten auszutauschen (Content-Type) und gleichzeitig eine für den verwendeten Übertragungsweg sichere Kodierung (Content-Transfer-Encoding) festzulegen. URL: http://de.wikipedia.org/wiki/Multipurpose_Internet_Mail_Extensions , Stand: 25.4.2005 59 VERWENDETE METHODEN UND WERKZEUGE | KAPITEL 4 Grundsätzlich kann man zwischen statischen und dynamischen Webseiten unterscheiden. Statische Webseiten stehen mit allen Inhalten als Dateien im Dateisystem des Servers zur Verfügung. Der Server liest die angeforderten Dateien ein und schickt diese an den Client. Dynamische Webseiten werden von einer Webanwendung zur Laufzeit generiert, indem z.B. Daten aus einer Datenbank geholt und weiterverarbeitet werden. Auf der Client-Seite, macht es dabei keinen Unterschied, ob eine statische oder eine dynamische Webseite dargestellt wird. Web-Server API Applikation CGI / PHP Applikation Client Server Dateisystem Datenbank Abbildung a4.3: Client - Server Kommunikation bei dynamischen Webseiten Bei den Technologien der Webanwendungen unterscheidet man allgemein zwischen dem Ort der Ausführung in clientseitige und serverseitige Technologien. Clientseitige Technologien werden im Speicher des Client-Rechners ausgeführt. Die bekanntesten Beispiele für diese Technologieart sind JavaScript, Flash und Applets. Viele dieser Techniken sollen vor allem die Präsentation der übermittelten Daten beeinflussen und benötigen zum Aufruf ein installiertes Softwaremodul31. Serverseitige Technologien werden innerhalb des Servers ausgeführt und dienen oft der dynamischen Erzeugung von Daten, z.B. aus einer Datenbank. Auf diese Technologien gehen wir im folgenden Kapitel näher ein. 31 meist Plugin genannt 60 VERWENDETE METHODEN UND WERKZEUGE | KAPITEL 4 4.1.3 Serverseitige Technologien In diesem Kapitel stellen wir die wichtigsten serverseitigen Technologien vor. Generell unterscheidet man hier ob eine Technik als eigenständiger Prozess funktioniert (z.B. CGI) oder innerhalb des Webserver-Dienstes (z.B. Server-APIs) läuft. CGI – Common Gateway Interface Über die CGI-Schnittstelle können Webbrowser Programme aufrufen, die auf den Webserver vorliegen. Hierbei können sowohl Daten vom Browser empfangen (z.B. aus einem Web-Formular) als auch an diesen versendet werden (z.B. eine generierte HTML-Seite). CGI-Programme können in vielen verschiedenen Programmiersprachen wie z.B. PERL oder C geschrieben sein. Als Vorraussetzung für den Betrieb über CGI muss auf dem Webserver lediglich ein entsprechender Interpreter vorhanden sein, bzw. die Programme für das Betriebssystem kompiliert werden. Am häufigsten wird in Verbindung mit CGI die Skriptsprache PERL verwendet, Für jede Anfrage über die CGI-Schnittstelle wird jeweils ein neuer Prozess gestartet, der nach fertiger Abarbeitung wieder beendet wird. Dieser Tatbestand macht die Ausführung von Programmen über CGI bedeutend langsamer als andere Methoden, was dazu geführt hat, das CGI heutzutage keine große Rolle mehr bei der Erstellung von dynamischen Webanwendungen spielt. Eine mögliche Verbesserung für die langsamere Ausführungsgeschwindigkeit ist die Einbettung der Programmiersprachen über Module direkt in den WebserverDienst. Leider wird hier der Vorteil bei der Programmiersprachen-Unabhängigkeit verspielt. Server-API – Application Programming Interfaces APIs sind herstellerabhängige Programmbibliotheken. Server-APIs werden beim ersten Aufruf dynamisch in den Speicher geladen und bleiben dort bestehen. Im Gegensatz zu CGI-Programmaufrufen muss nun nicht jedes Mal ein neuer Prozess gestartet werden, was die Ausführungsgeschwindigkeit erheblich verringert. Die Anfragen aus Webseiten werden innerhalb des WebserverDienstes abgearbeitet und direkt an die API weitergegeben, wodurch eine gute Performance erreicht wird. Beispiele für Server-APIs sind z.B. Java Servlets oder ISAPIs von Microsoft. Neben der schnelleren Ausführungsgeschwindigkeit haben Server-APIs aber auch einige Nachteile. Sie sind herstellerabhängig, d.h. sie funktionieren nur auf den 61 VERWENDETE METHODEN UND WERKZEUGE | KAPITEL 4 Servern, für die der Hersteller sie programmiert hat. Außerdem sind sie nicht vom Webserver-Dienst getrennt, was dazu führen kann, dass schlecht programmierte APIs den Webserver-Dienst zum Absturz bringen können. Skriptsprachen – z.B. PHP, ASP, JSP etc. Am häufigsten werden dynamische Webanwendung derzeit mit serverseitigen Skriptsprachen wie PHP, ASP (Active Server Pages) oder JSP (Java Server Pages) realisiert. Wird vom Webbrowser eine Anfrage auf eine dynamische Webseite gestellt, liefert der Webserver nicht die entsprechende physikalisch vorliegende Datei an den Webbrowser zurück. Stattdessen wird die Seite zur Laufzeit von einem entsprechenden Interpreter32 ausgeführt und erst diese Ausgabe – meist in Form einer HTML-Seite – anschließend an den Webbrowser geschickt. Ähnlich wie Server-APIs bleibt auch der Interpreter der Skriptsprache im Speicher des Servers und muss nicht für jede Anfrage neu gestartet werden, was gegenüber CGI einen Performance-Vorteil darstellt. Ein weiterer Pluspunkt ist der mittlerweile große Funktionsumfang vieler Skriptsprachen, wie Zugriffe auf unterschiedliche Datenbanken oder die Erzeugung von Grafiken zur Laufzeit. Ein Nachteil, den prinzipiell alle Skriptsprachen teilen, liegt im Grundkonzept, dass alle vom Server erstellten Seiten interpretiert werden müssen. Dadurch steigt die Auslastung des Webservers, was bei vielen gleichzeitigen Zugriffen einen Performance-Nachteil darstellen kann. 4.2 Verwendete Konzepte 4.2.1 OOP OOP steht für objektorientierte Programmierung und bezeichnet ein Verfahren zur Strukturierung von Computerprogrammen. Das Konzept der OOP ist ungefähr vergleichbar mit einer abstrakten Sicht auf die reale Welt. In unserer Umwelt können alle Dinge durch einen Zustand mit Eigenschaften und Verhaltensregeln beschrieben werden. Einige Dinge sind dabei sehr einfach und andere hoch komplex und nur sehr schwer zu fassen. 32 Ein Interpreter ist ein Software-Programm, das Quellcode zur Laufzeit direkt analysiert und ausführen kann. Es bedarf keiner vorherigen Kompilierung durch einen Assembler o.ä. 62