Eine Schnittstelle ( CGI ) erlaubt Interaktivität zwischen einem Klienten und einem entfernten Server über ein Netz. Im folgenden Beispiel wird das HyperText Transfer Protocol ( HTTP , Internet RFC 1945) verwendet, das ein weit verbreitetes Protokoll für externe ,,Gateway`` Programme ist, um mit Informations-Servern zu kommunizieren. Gateway Programme oder auch kurz Gateways sind Programme, die Anfragen verarbeiten und spezielle Dokumente dazu generieren. Das HTTP Protokoll adressiert Dateien über sogenannte Uniform Resource Locators ( URL , Internet RFC 1738).
Der Kontext der einzelnen Komponenten läßt sich durch ein kleines Schema (Abbildung 6.6) veranschaulichen.
Abbildung 6.6: Kontext der Klienten-Server Komponenten
Das folgende kleine HTML-Dokument ist statisch und wird vom Server geliefert (Abbildung 6.7).
<html> <a href="hello.cgi">hello.cgi</a> </html> |
Abbildung 6.7: Quellentextbeispiel: HTML und CGI
Das assoziierte CGI Programm
hello.cgi
, ein minimales Perl Programm,
wird bei Auslösung der Referenz in Echtzeit ausgeführt
und kann aus diese Weise
verwendet werden, um dynamische Informationen zu verarbeiten
(Abbildung 6.8).
Im Kopf der übermittelten Daten können außer
der erforderlichen Angabe Content-type:
noch verschiedene weitere Angaben stehen.
#!/usr/bin/perl $t = "Hello!"; print <<EOT; Content-type: text/html <title> $t </title> <h1> $t </h1> EOT |
Abbildung 6.8: Quellentextbeispiel: CGI Programm
Mit Hilfe derartiger Programme kann der Server daher Informationen liefern, die ansonsten vom Klienten (engl.: ,,client``), z.B. einer Datenbank, nicht lesbar wären. Diese Programme können daher als vielseitiger Vermittler zwischen Klient und Server verwendet werden.
Eine sehr verbreitete Anwendung ist der Einsatz für die Handhabung von FORM Requests für HTTP . CGI ist eine Konvention zur Integration von Gateway Programmen, die unter den Herstellern von HTTP Servern vereinbart wurde.
Als Programmiersprache für CGI Programme kommt jede Sprache in Frage, die ein ausführbares Programm liefert. Beispiele sind daher z.B. Perl , Tcl , Shells, C/C++, Python, Fortran . Erstere können direkt interpretiert werden, letztere müssen erst kompiliert werden. Beide Methoden haben in bestimmten Fällen Vorteile. Für Perl und Tcl existieren zahlreiche Werkzeuge zur CGI/Web-Programmierung [Ivl1997].
Ein Beispiel für eine Anwendung im Bereich Kartenserver über das Internet ist der MapServer [Koo2000], der als freie Software im Rahmen des freeGIS Projekts [Rei2000] erst seit kurzer Zeit entwickelt wird, trotzdem aber bereits für vielfältige Aufgaben zum Einsatz kommen kann.
Die Basisfunktionen des MapServers sind Navigation (Vergrößern, Verkleinern, Verschieben) und Abfragen (Punkte, Regionen, Felder, Werte).
Der Kern des MapServers ist ein CGI-basiertes Programm.
Die Erstellung einer Anwendung unter Nutzung des MapServers umfaßt die Erstellung von Dateien zur Definition von Eigenschaften und Darstellungen und für die Vorlagen der Benutzerschnittstelle. Eine reine Nutzung der Möglichkeiten in diesem Bereich durch den Anwender erfordert immer, daß die betreffende Anwendung bereits erstellt wurde. Für viele Anwender sind daher erst spezielle Anwendungsimplementierungen interessant, die auf Basis eines MapServers entwickelt wurden.
Die Anwendung wird über die Definition von Objekten und deren Eigenschaften konfiguriert.
Die Funktionen der so erstellten Anwendungen können über Skriptsprachen, wie Perl und Tcl/Tk , genutzt werden.