Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03499.jsonl.gz/2569

Internet-Programmierung
Inhalt:
Jede Web-Interaktion hat 2 Seiten: der Client (der Leser, welcher mit dem Browser auf Ihre Seite zugreift) und der Server (der Ort, wo Ihre Homepage ist. Damit ist die Hardware und die Software gemeint, welche weiss, wie man die Anfragen vom Internet beabtwortet, Ihre Seite findet, und Sie bereitstellt.).
Gibt jemand im Browser (Client) Ihre URL ein, nimmt der Client Kontakt mit dem Server auf, und dieser antwortet, indem er die HTML-Datei zurückschickt, welche dann der Client anzeigt.
Nun wollen wir den Ablauf ein bisschen interaktiver gestalten. Wir wollen den Client
befähigen, mit dem Server zu kommunizieren: z.B. um Informationen von einem Formular zu
senden oder diese in einer Datei auf dem Server zu speichern.
Wir haben nun 2 Maschinen und 2 separate komplexe Software-Umgebungen. Auf der Maschine des Lesers läuft der Browser (der Client). Auf der anderen Seite läuft der Web-Server.
Auf dem Client-Computer können zudem parallel noch andere Programme laufen, wie Textverarbeitung oder Grafikprogramme. Und während diese Programme arbeiten, können auch noch auf der Seite des Servers zusätzliche Programme laufen.
Wenn wir von Interaktion sprechen, wollen wir via den Client den Server auffordern, ein zusätzliches Programm zu starten.
Ok, nachdem wir die beiden Seiten einer Web-Interaktion ein bisschen angeschaut haben, wollen wir schauen, welche Programmiermöglichkeiten uns dazu zur Verfügung stehen.
JavaScript hat mit Java ausser dem ähnlichen Namen nicht viel gemeinsam. JavaScript
ist eine Skriptsprache, welche Ihnen erlaubt, den Code auf der Client-Seite einer
Web-Interaktion auszuführen. Es ermöglicht Ihnen, einige Sachen auf dem Computer des
Leser auszuführen. Man kann damit nicht allzuviel mit Dateien machen, alleine schon wegen
der Sicherheit und dem Ressourcen-Zugriff, aber man kann einige interessante Dinge für
die Anzeige machen.
2.1 DHTML / CSS
Mit IE 4 und Netscape 4.0 kam die Möglichkeit hinzu, HTML-Dateien zu erzeugen, bei
denen einzelne Elemente während der Anzeige dynamisch ihren Inhalt ändern. Diese Technik
nennt man Dynamic HTML (DHTML). Für die Realisierung von DTHML benutzt man JavaScript,
und für Formatierungen und Positionierungen kommt dann oft noch CSS hinzu.
Wie schon gesagt, DHTML kann man erst mit den Browsern der Version 4 benutzen. Leider
fiel die Implementation beim Microsoft- und beim Netscape-Browser nicht gleich aus, so
dass man meist nicht drum herum kommt, für den Netscape ein anderes Script zu schreiben
als für den IE. Netscape hat ausserdem verkündet, dass die kommende Version 5 (Mozilla)
ihres Browsers nicht mehr kompatibel sei mit der DHTML-Variante von Version 4, was das
Leben eines DHTML-Entwicklers auch nicht gerade leichter machen wird.
2.2 XML
Um XML ist zur Zeit der gleiche Hype wie früher um Java, und eine grosse Zukunft wird dieser Technologie vorausgesagt. Experten sagen, dass dieses das neue Ding ist. Die Browserhersteller versprechen, XML bei der weiteren Entwicklung ihrer Browser volle Unterstützung zu schenken. Doch was ist XML?
Die Extensible Markup Language ist das universelle Format für strukturierte Dokumente und Daten im Web, welches auch erlaubt, eigene Tags zu kreieren. Falls Sie Webseiten mit den neusten Technologien erstellen wollen, bietet Ihnen XML viele Vorteile, unter anderem:
es arbeitet in Verbindung mit CSS und DHTML
Einige interessante Quellen:
3.0 Macromedia Flash
Mit Flash erzeugte Seiten laufen wie bei Java-Applet auch beim Client auf dem Browser
ab. Während Java-Applets jedoch von Programmierern erstellt werden, stammt der
Flash-Inhalt meist von Grafikern/Designern.
Ein Nachteil von Flash ist, dass man ein Plug-In installieren muss. Ab den Browser-Versionen 5 ist das Plug-In jedoch schon stadardmässig dabei. Gemäss dem Hersteller Macromedia sollen aber schon über 80 % der Internet-Nutzer fähig sein, Flash-Inhalt anschauen zu können.
Java ist eine plattform-unabhängige Sprache, welche auf dem Client oder auf dem
Server laufen kann. Es ist eine vollumfängliche Programmiersprache, aber auch hier gibt
es aus Sicherheitsgründen Einschränkungen mit dem Dateizugriff.
Java war lange Zeit die Boom-Srache schlechthin, die Sprache mit dem grössten
Sex-Appeal, das Lieblingskind der Szene. In letzter Zeit ist es ein bischen ruhiger
geworden, der Hype ist verstummt. Mit neuen Technologien wie DHTML/CSS und Flash wird Java das Leben schwer
gemacht. Falls man nicht eine Website mit Verschlüsselung und anderen
sicherheitsrelevanten Aspekten (wei z.B. bei Banken-Applikationen) realisiert, sieht man
heutzutage meist davon ab, für neue Projekte Java zu gebrauchen, vor allem wegen
längeren Downloadzeiten und der nicht sehr grossen Java-Akzeptanz bei den Benützern.
Dies geht dann meist zugunsten von den oben erwähnten Technologien DHTML und Flash.
5.0 CGI: Server-Side
Nachdem die Server-HTTP-Spezifikationen geschrieben worden sind, fanden die Authoren
heraus, dass die Leute mehr wollten, als Web-Seiten zur Anzeige aufzubereiten.
Insbesondere wollten sie, dass der Server fähig war, auf Datendateien zuzugreifen und
auch Daten abzuspeichern.
CGI ist eine Spezifikation, welche sagt, dass der Server Eingaben in einem speziellen
Format an ein Programm gibt und Rückgabewerte in einem speziellen Format erwartet. Was
das Programm in der Zeit zwischen der Ein- und der Ausgabe macht, liegt an den
Möglichkeiten und Beschränkungen der jeweiligen Programmiersprache.
Für die Benutzung von CGI, um damit zu erreichen, dass der Client auf dem Server etwas ausführt, braucht es 4 Dinge:
ein Auslöser (Trigger), welcher entweder eine URL ist, die an
ein Programm verweist, welches das CGI-Format versteht, oder ein Server Side Include
(SSI), welches ein Programm ausführt, welches das CGI-Format versteht;
CGI erlaubt dem Client, eine Anfrage an den Server zu schicken, damit ein Programm AUF DEM SERVER läuft. Dieses Programm ist das CGI-Skript. Das CGI-Skript ist ein ausführbares Programm (es kann in einer von mehreren Sprachen geschrieben werden), welches fähig ist, die CGI-Anfrage, die vom Server kommt, zu vertstehen.
Beachten Sie bitte, dass, wenn Sie obengenannte 4 Voraussetzungen erfüllen, die Ausführung eines CGI-Skripts stets noch ein 2-Schritte-Prozess ist: Zuerst bittet der Browser den Server, das CGI-Programm auszuführen, entweder durch eine URL oder durch ein Aktions-Attribut eines HTML-Formulars.
Nachdem der Server die Anfrage entgegengenommen hat, leitet er sie an das CGI-Skript weiter.
In diesem Sinne beinhaltet CGI ein "Darf ich, Mama?"-Schritt, welcher in einem typischen Stand-alone-Programm nicht enthalten ist. Das ist auch der Grund, warum vielen HTML-Programmierern die Haare zu Berge stehen, wenn sie ein CGI-Programm das erste Mal ausführen; das Skript ist da, es läuft prima im Selbst-Test, aber aus irgendeinem Grund will es der Server nicht ausführen.
Daher gilt es einige Dinge zu beachten:
der Browser muss wissen, wie er die CGI-Anfrage weiterleiten
muss (dies ist z.B. kritisch, wenn der Browser keine Formulare unterstützt);
Ein Programm, welches das CGI-Format handhaben kann, wird "CGI-Skript" genannt, egal, ob es in einer Skript-Sprache wie Perl oder in einer vollen Programmiersprache wie C geschrieben wurde.
Am meisten wird CGI von einem Client dazu gebraucht, um auf dem Server an Daten zu gelangen, entweder um sie abzufragen oder auf dem Server zu speichern, um die Daten danach im Browser anzuzeigen. Ein typisches Beispiel ist ein Zähler, welcher bei jedem Anwählen einer Seite den Zähler auf dem Server um 1 erhöht und in an den Browser zur Anzeige zurückschickt.
(Mit JavaScript kann z.B. kein Zähler generiert werden, da JavaScript nur auf dem Client läuft. Stattdessen muss ein Zähler auf dem Server gespeichert werden können.)
Ein CGI-Programm kann z.B. auch Produkteinformationen, die auf dem Web-Server (oder irgendeinem Computer, auf den der Webserver Zugriff hat) gespeichert sind, zugreifen, diese Daten hübsch formatieren und sie dann wieder an den Web-Server geben, welcher sie dann an den Client weiterleitet.
Einer der gebräuchlichsten Anwendungsbereich von CGI ist, Informationen von einem
HTML-<FORM>-tag zu bekommen und diese an das serverseitige Programm weiterzuleiten.
Ausgelöst wird dies durch das ACTION-Attribut.
<FORM METHOD=POST ACTION="http://www.simsy.ch/cgi-bin/post-query">
Dieses HTML-tag veranlasst, dass das CGI-Skript mit dem Namen 'post-query' ausgeführt wird, sobald der Leser das Formular von der HTML-Seite übermittelt. Der Browser schickt die Daten im Formular an den Server, der Server startet das CGI-Skript, welches in ACTION genannt wurde, und dieses verarbeitet dann auch die Informationen.
Da CGI auch Dateien erstellen kann, ist es auch fähig, HTML-Dateien zu erstellen, und diese dann an den Leser zur Anzeige zurückschicken. Dies ist eine gebräuchliche Methode, um Informationen vom Server zu bekommen und sie an den Client zu schicken.
CGI kann daher benutzt werden, um HTML-Seiten "on the fly" zu generieren.
Perl ist eine Skriptsprache, die ursprünglich von der UNIX-Welt kam. Es ist ziemlich
gut für das Handling von Text-Strings, und da CGI dazu tendiert, die Inputdaten wie ein
einziger langer String aussehen zu lassen, ist Perl auch ziemlich gut als CGI-Sprache.
Anders als Java ist Perl nicht unbedingt dazu entwickelt worden, um plattform-unabhängig zu sein. Es ist eine nette Sprache, die schnell zu erlernen ist und passend ist für Dinge, welche die meisten Web-Applikationen auf dem Server ausführen wollen, obschon einige Abstriche bezüglich Geschwindigkeit gemacht werden muss. Perl läuft besser auf UNIX als auf NT, andere Plattformen sind dazu eher nicht zu empfehlen. Wenn ein Perl-Skript für eine Web-Applikation ausgeführt wird, ist dies meist ein CGI-Skript: Die HTML-Datei benutzt CGI, um an den Server ein "Darf ich, Mama?" zu schicken, welcher dann das Perl-Programm startet.
Wie nun ein solches Programm funktioniert, um etwa Formulardaten auszuwerten, können Sie bei Jason Nugent lesen.
Im Internet erhalten Sie massenhaft weitere Perl-Skripts, die Sie zur freien Weiterbenützung in Ihren Seiten einbauen können (Wie gesagt, Voraussetzung dazu ist, dass der Webserver, auf dem Ihre Seiten sind, die CGI-Skripte unterstützt und dass Sie auf dem Server auch die entsprechenden Berechtigungen besitzen.)
Webreference.com hat ein Tutorial, das zeigt, wie man ein Webverzechnis analog Yahoo mit Perl machen kann.
Perl ist jedoch nicht die einzige Sprache, die für CGI in Frage kommen kann. Mac-User
benutzen häufig das altbewährte Applescript. O'Reilly's
Server erlaubt Windows NT-Benützern auch Visual Basic als CGI-Skript-Sprache. Auch Java
und C/C++ werden häufig gebraucht, vor allem, wenn volle Performance gefordert wird. Das
einzige, was eine Sprache beherrschen muss, um eine CGI-Sprache zu sein, ist das Handling
von der Ein- und Ausgabe im CGI-Format. Wenn dies erfüllt ist, muss das Programm mit dem
richtigen Namen und den richtigen Berechtigungen in das richtige Verzeichnis gestellt
werden, und schon werden sie normalerweise fähig sein, das Programm als CGI-Skript zum
Laufen zu bringen.
Active Server Pages (ASP) ist eine Technologie, mit welcher Befehle auf dem Webserver ausgeführt werden, und als Ergebnis wird normalerweise HTML an den Browser zurückgeschickt. In der Praxis sieht das so aus, dass zwischen die normalen HTML-Anweisungen Skripte eingebunden. Der Server wertet die Skripte aus und schickt dann nur noch die Ergebnisse in purem HTML an den Browser. Als Skriptsprachen kann hier z.B. VBScript oder JScript eingesetzt werden.
Hat man schon einmal etwas mit z.B. Visual Basic/VBA oder JavaScript programmiert, fällt einem der Einstieg in die ASP-Programmierung nicht schwer, da einem, wie gesagt, mit VBScript oder JScript eine Sprache zur Vergügung steht, die sehr an VBA oder JavaScript angelehnt ist.
Zu beachten ist jedoch, dass für das Funktionieren von ASP auf dem Server auch die entsprechenden ASP-Erweiterungen installiert werden müssen. Diese sind jedoch in der Zwischenzeit nicht nur für Microsofts hauseigenen IIS erhältlich, sondern sogar auch für Webserver wie den Apache.
Am Anfang war die Seite. Die pure, statische HTML-Seite. Doch damit gab man sich nicht lange zufrieden, und schon bald wurden Möglichkeiten erschaffen, die Seiten dynamisch zu erstellen. Nachdem die Entwickler mühselig CGI gelernt hatten, brachte Microsoft ASP heraus, und man staunte ob deren Raffinesse. Die Bedüfnisse von Entwicklern hielten aber weiter an, und man wollte nun vortan nicht mehr nur einzelne Seiten on the fly erstellen lassen, nein, man wollte jetzt auch ganze Appliaktionen ins Web stellen. Um dabei das Leben eines Web Developers ein bischen leichter zu machen, warf Microsoft fleissig weitere Technologien auf den Markt.
ActiveX war/ist ein Teil davon. Eigentlich sollte ActiveX-Controls Java verdrängen. Doch die Akzeptanz gegenüber ActiveX war sowohl bei den Benutzern wie auch (verständlicherweise) bei der Browserkonkurrenz nicht sehr hoch, und so setzt heute jemanden, der ein breites Publikum erreichen möchte, kaum ActiveX-Controls in seinen Webseiten ein.
Microsoft hat schnell einmal realisiert, dass die Anwendungen im Web immer komplexer
werden. Dies wurde einem auch auf eindrückliche Weise mit der Präsentation der
Entwicklungsplattform Visual Studio 6.0 klar. Die Zeiten, in denen man einzig und allein
einen Texteditor als HTML-Werkzeug nutzte, ist definitiv vorbei.
Die Zeiten, als man noch Eindruck schinden konnte, wenn man ein paar HTML-Tags kannte, sind also definitiv vorbei. Doch Microsoft liegt es wohl fern, Internet-Entwickler mit neuen Technologien einzuschüchtern, als vielmehr, dass Sie ihnen damit das Leben leichter machen möchten.
Wurde Visual Basic früher hauptsächlich benutzt, um Client-/Server-Applikationen zu schreiben, so stehen einem heutzutage mit VB mehrere Möglichkeiten zur Verfügung, diese Applikationen auch als Web-Applikationen zu programmieren. Ein Weg dazu sind die sogenannten WebClasses, mit denen man IIS-Applikationen erstellen kann. Das Prinzip ist das gleiche wie mit ASP: Bei Aufruf einer Webseite wird auf dem Webserver Code abgearbeitet, das Ergebnis wird als HTML an den Browser zurückgeliefert. Da das ganze auf dem Server abspielt, kommt es natürlich auch nicht darauf an, was für ein Browser benutzt wird.
WebClasses bieten gegenüber normalen ASP-Seiten folgende Vorteile:
Nachteile:
Mögliches Einsatzgebiet:
Server Side Includes (SSIs) sind von der Technik her ähnlich wie CGI, insoweit sie auch Befehle an den Server geben um spezielle Funktionen auszuführen. Das bedeutet auch, dass sie nicht von allen Servern unterstützt werden und nicht alle Verzeichnisse haben die Erlaubnis sie zu gebrauchen. Grundsätzlich teilen Server Side Includes dem Webserver mit, ein HTML-File zu lesen und zu stoppen, sobald eine SSI-Zeile kommt, dort etwas ausführen, und danach wieder weiterfahren.
Um dies zu tun, muss der Webserver die HTML-Datei Zeile für Zeile (ja wirklich, Zeichen für Zeichen) lesen, befor er sie an den Client weitergibt. Dies wird parsing genannt, und wenn es langsam tönt, so ist es auch so. Aus diesem Grunde sind viele Systeme nicht dazu eingerichtet, um jede einzelne Web-Seite zu parsen. Statt dessen werden oft spezielle Namenskonventionen benutzt (häufig .shtml statt .html, der Webmaster kann dies aber selbst bestimmen), und dann werden nur diese Files geparst.
Die SSIs sind in der HTML-Datei eingefügt. Typische Bespiele für SSIs sind
<!--#exec cgi="/cgi-bin/countme.cgi"-->
<!--#include file="newfile.txt"-->
8.1 #INCLUDE
Eines der nützlichsten SSIs ist das #INCLUDE, womit man eine Datei innerhalb der HTML-Datei einfügen kann.
Bitte erinnern Sie sich, dass sich dies auf dem Server abspielt, also bevor die Seite an den Client gesendet wird. Dies ist ein hervorragender Weg, um die Organisation von grossen Seiten zu verbessern und vereinfachen. Ein Beispiel kann z.B. ein Wetterdienst sein, wo das Grundgerüst immer gleich bleibt, nur die aktuellen Wetterdaten werden in das HTML-File eingespeist.
8.2 #EXEC
Dieser Befehl erlaubt Ihnen, an dieser Stelle ein CGI-Skript auszuführen. Der Server
wartet dann auf das Ergebnis des CGI-Skripts, bevor er mit dem Parsing der Seite
weitermacht.
(Technische Bemerkung: Die Sicherheitsvorkehrungen für SSI sind auf andere Weise implementiert als diejenigen für das cgi-bin-Verzeichnis. Daher ist es nicht ungewöhnlich, dass einige Seiten CGI erlauben, SSIs aber nicht. Fragen Sie Ihren Webserver-Betreiber, was Sie berechtigt sind zu gebrauchen und was nicht.)
Alles dies kann nun zusammenarbeiten. Clientseitiges JavaScript kann gebraucht werden, um die Verarbeitungszeit und die Gültigkeit zu verbessern, oder auch für Animationen, auf der Seite des Clients (im Browser). Es kann dann die vorgeprüften Daten eines Formularinhaltes über CGI an ein Perl-Programm weitergeben, welches auf dem Server abläuft, und die Informationen dort in einer Datei speichert. Dann kann der Server die Daten zurückerhalten und sie an den Client, wo ein weiteres clientseitiges JavaScript eine hübsche Verabeitungs-Nachricht erstellen kannn.
(Denken Sie daran, dass client-side JavaScript den Server nicht berührt, daher können Sie es nicht gebrauchen, um Daten auf dem Server zu speichern oder Daten vom Server zu holen.)
Oder Sie können Java auf der Clientseite und auf der Serverseite gebrauchen. Diese zwei wären dann aber voneinander unabhängige Implementationen; wenn der Browser die Java-Fähigkeit abgestellt hat, oder sie nicht vorhanden ist, können die Java-Programme auf dem Server noch immer ablaufen. Normalerweise sind die Java-Programme auf dem Server jedoch nicht die gleichen wie die Java-Applets, die auf dem Browser ablaufen.
Um vom Client mit dem Server zu kommunizieren, können Sie CGI gebrauchen. Häufig wird dies mit Perl, C, Visual Basic, Lisp, Ada etc. gemacht. Diese Programme müssen jedoch alle auf dem Server installiert sein, nicht auf dem Client. Wenn Sie einen UNIX-Host haben, können Sie kein VB-Programm als CGI-Skript laufen lassen, auch wenn der Browser auf einem PC läuft - die CGI-Programme laufen immer auf dem Server.
Was das Beste ist kann man wohl so einfach nicht sagen. Schnelle, effiziente Formularverarbeitung würde idealerweise auf der Client-Seite (für Plausibilitätsprüfung, Animationen, Navigationsschaltflächen, und Anzeigenachrichten) und auf der Server-Seite (Daten-Speicherung und -Abfrage) basieren.
Vieles hängt davon ab, was Sie bereits wissen, wieviel Zeit Sie in den Lernaufwand investieren möchten, was Sie zur Verfügung haben und was Ihr Server unterstützt.
Für CGI-Skripts oder ASP-Seiten spricht, dass es auf Ihrem Server läuft und ein Ergebnis liefert, das beinahe alle Leser sehen können. Sie machen die Arbeit, Sie kontrollieren die Sicherheit und Sie handhaben die Antwort.
JavaScript, VBScript und Java-Applets verlangen vom Leser, dass er die richtige Software benutzt, ansonsten kann er Ihre hübschen Features nicht sehen.
ActiveX schränkt sogar noch mehr ein. Weil sich der Leser seine Festplatte in Ihre
Hände anvertrauen muss und wegen der 32bit-Windows-Abhängigkeit gehen Sie das Risiko
ein, Leser oder zumindest ihre Zufriedenheit zu verlieren.
Nun, ob eine Serverseitige Java-Applikation CGI ersetzen wird, ist in den meisten
Fällen nicht anzunehmen. Und die wenigsten Web-Server führen natives Java aus - sie
gebrauchen stattdessen CGI oder Active Server Pages oder andere Wrapper/Middleware, um es
zu implementieren. Es ist ungewöhnlich, dass man einen Host findet, der Java als Ersatz
für CGI/ASP benutzt. Die Lernkurve für Java ist auch relativ steil; CGI kombiniert mit
einer einfachen Sprache wie Perl ist ein einfacher und schneller Weg, um einfache
Programme auf dem Server zu installieren.
Wie schon erwähnt, was Sie einsetzen sollten, hängt davon ab, welche Vorkenntnisse Sie besitzen, was Sie auf Ihrem Server zur Verfügung haben und was Sie glauben, das der Besucher Ihrer Website zur Verfügung und aktiviert hat.
Falls Sie ASP/CGI auf Ihrem Server nicht einsetzen können, kann JavaScript einige hübsche Dinge mit Plausis und der Anzeige auf der Browserseite machen.
Falls Sie nach etwas Ausschau halten, um Ihre Website ein bischen aufzupeppen, ist JavaScript/DHTML eine gute Wahl, da es einfacher zu lernen ist als Java.
Sie können nun selbst wählen, aber schauen Sie nach Möglichkeit, dass beide Seiten der Web-Transaktion berücksichtigt werden: der Client und der Server.