JavaScript – M+T Pocket . Das Programmier-Handbuch (Office Einzeltitel) [Taschenbuch]

2.2
Client und Server

Bei Scripten (wie auch vielen anderen Techniken in einem
Netzwerk) muss man grundsätzlich den Ort, wo sie ausgeführt werden,
berücksichtigen. Im Wesentlichen kann man beim Ort zwischen dem Server und dem
Client unterscheiden. Das ganze Internet beruht auf dem so genannten
Client-Server-Prinzip.

Der Begriff »Server« wird oft ungenau verwendet. »Server«
leitet sich aus dem lateinischen Wort »Servus« ab und bedeutet Sklave oder Diener.
Dieser Sklave bedient irgendwelche Klienten – englisch Clients. Eine Beziehung
zwischen Client und Server bedeutet also streng genommen nicht mehr, als dass
irgend jemand oder irgend etwas eine Leistung bereitstellt, was irgend jemand
oder irgend etwas weiteres verwenden will. Die oft verwendete Gleichsetzung von
Server mit einem Rechner in Form von Hardware ist deshalb schlampig und
verhindert die korrekte Beschreibung von Prozessen im Internet oder allgemein
bei einer Client-Server-Beziehung. Zwar ist es in einem Netzwerk häufig der
Fall, dass einem Rechner eine besondere Bedeutung zukommt und er eine Leistung
zur Verfügung stellt. Etwa, dass er Daten oder Programme bereitstellt, die
Datensicherung durchführt oder von anderen Rechnern zum Drucken genutzt werden.
Dieser Rechner ist gewissermaßen der Diener (oder Sklave) der anderen Rechner
und kann irgendwo schon als Server bezeichnet werden. Genau genommen stellt
aber nicht der Rechner als Hardware Ressourcen bereit, sondern die
entsprechende Software auf dem Rechner. Das Programm ist also der Server und
nicht die Hardware! Nur darüber lässt sich auch erklären, wie auf einem
einzigen physikalischen Rechner mehrere Server laufen können oder ein einziger
Server sich über mehrere physikalische Rechner erstreckt. Das ist so auch
keineswegs eine exotische Ausnahme, sondern der Regelfall. Viele Rechner haben
parallel beispielsweise einen WWW-Server, einen FTP-Server, einen E-Mail-Server
und vielleicht einen Druck-Server laufen. Ebenso lässt sich mit dem vereinfachten
Hardware-Denkansatz nicht klarmachen, warum ein und der selbe Rechner einmal
als Server, dann aber auch zeitgleich wieder als Client fungieren kann. Die
Situation kann sogar soweit zugespitzt werden, dass Client und Server auf dem
gleichen Rechner laufen. Eine solche Client-Server-Beziehung liegt
beispielsweise vor, wenn eine Excel-Tabelle in ein Word-Dokument eingebunden
wird. Excel dient in dieser Konstellation als Server für Word, Word ist der
Client.

Im Rahmen einer Internet-Aktion hat man immer eine
Client-Server-Beziehung vorliegen. Der Client ist entweder ein Browser, der von
einem WWW-Server eine Webseite anfordert oder ein FTP-Programm, das von einem
FTP-Server eine Datei downloaden will. Oder ein Telnet-Programm, das über einen
Telnet-Server einen entfernten Rechner fernsteuert.

Im Fall von Scripten muss man also beachten, dass ein Script
sowohl in einem Serverprogramm als auch einem Clientprogramm laufen kann.
Grundsätzlich ist es nur von Bedeutung, ob diese Programme einen passenden Interpreter
bereitstellen. Zwar werden die Aufgaben von Client-seitigen Scripten sich von
denen auf einem Server unterscheiden. Die Syntax und rein
programmiertechnischen Vorgänge sind aber vollkommen gleich.

2.2.1
Aufgaben von JavaScript auf Clientseite

Ein Browser dient im WWW als Client zur Anforderung einer Webseite von einem WWW-Server. Die angeforderte Webseite
interpretiert ein Browser beim Laden und stellt sie dar. Grundsätzlich basiert
jede Webseite auf HTML, aber eine rein in HTML erstellte Webseite ist in ihrer
Leistungsfähigkeit in alle Richtungen stark begrenzt und muss sich für viele
Situationen supplementären Technologien bedienen. JavaScript ist in vielerlei
Hinsicht die ideale Ergänzung zu HTML. Einmal ist JavaScript die wohl am
weitesten unterstützte Scriptsprache für das World Wide Web, dazu noch
leistungsfähig und dennoch recht einfach zu lernen. Mit einer Scriptsprache wie
JavaScript kann man den eingeschränkten Client-Server-Prozess einer "normalen"
Internetverbindung im Rahmen des WWW mit Intelligenz aufwerten oder statische
HTML-Seiten dynamisieren. Zudem erlauben JavaScripte die Programmierung von
Clientprogrammen (Browser), optimieren, steuern oder kontrollieren
Interaktionen, automatisieren Vorgänge, steuern und beeinflussen andere
ergänzende Technologien und noch vieles mehr. In den Eingangsbeispielen haben
wir schon – zugegeben sehr einfache – Situationen durchgespielt. Obwohl
JavaScript von relativ einfacher Struktur ist, erlaubt der potentielle Zugriff
auf vorgefertigte Module (Objekte) die Erstellung von vielen komplexen
Vorgängen.

2.2.2
Aufgaben von JavaScript auf Serverseite

Server-seitige Scripte kommen da zum Einsatz, wo man auf Seiten des Clients entweder die notwendigen Informationen nicht zur
Verfügung hat, Funktionalitäten benötigt, die ein Clientsystem nicht gestattet
oder wo man Funktionalitäten nicht aus der Hand geben möchte (etwa bei
sicherheitskritischen Aktionen). So elegant die Verlagerung von Funktionalität
auf den Rechner des Besuchers einer Webseite über Client-seitige Scripte ist –
es lassen sich nicht sämtliche Funktionalitäten vom Server auf den Client
verschieben. Das liegt einmal an der relativen Einfachheit von Scriptsprachen,
zum anderen in der Natur der Sache. Wenn man alle Funktionalität beim Client
lösen könnte, würde ja keine Server-Client-Logik für den Internet-Prozess
benötigt werden. Insbesondere lassen sich mittels Client-seitigen Scripten in
der Regel keine Aufgaben lösen, die das Schreiben oder Lesen von Dateien
notwendig machen. So etwas ist aus Sicherheitsgründen nahezu immer beim
Clientrechner unterbunden (oder würden Sie es gerne sehen, wenn ein Script in
einer Webseite ihre Excel-Datei mit ihren Passworten und Geheimzahlen ausliest
und an interessierte Beobachter übermittelt?).

Aber vor Allem kann bei vielen Vorgängen ein Client nicht
wissen, was andere Clients tun oder bisher mit einer Webseite getan haben. Als
Beispiele kann man sich einen Webseitenzähler vorstellen, der überwacht, wie
oft eine Webseite von einem WWW-Server angefordert wurde, ein Gästebuch oder
ein Online-Shop mit einer Datenbank, wo Bestelldaten aufgenommen werden. Solche
Informationen müssen zwingend auf dem Server geführt werden, denn nur dort laufen
alle Fäden zusammen, und man wird für Aktivitäten so gut wie immer auf
Server-seitige Scripte oder Programme zurückgreifen müssen.

Server-seitige Techniken sind auf jeden Fall sehr
interessant und leistungsfähig. Sie unterliegen jedoch diversen Einschränkungen,
die ihren objektiven Nutzen für viele Privatanwender erheblich reduzieren.
Besonders beschränkend für viele Webseitenersteller erweist sich, dass
zahlreiche Provider die Ausführung von Server-seitigen Fremdscripten nicht
gestatten. Das betrifft vor Allem solche Angebote, wo man für kleines Geld oder
gar umsonst Webspace bekommt[2].
Zwar stellen viele Provider oft eigene Scripte für den allgemeinen Gebrauch
bereit. Den Upload (und/oder das Ausführen) von selbst geschriebenen Scripten,
die ihren Server steuern sollen, unterbinden sie jedoch meist. Das ist aus
Gründen der Sicherheit und Stabilität des Servers auch leicht verständlich.

Die Alternative ist die Einrichtung eines eigenen Webservers
wie Sambar, Jana oder PWS auf dem eigenen Rechner bzw. in lokalen Netzwerk.
Zumindest für Übungszwecken, denn die Bereitstellung einer permanenten
Verbindung zum Internet (geeignete Hardware, eigene feste IP-Nummer,
Standleitung, Einrichtung einer zuverlässigen Firewall, etc.) ist sehr
aufwendig und kostenintensiv.