Unterschied zwischen serverseitigen und clientseitigen Programmiersprachen

Wenn man Webseiten programmiert, wird man früher oder später auf die Begriffe "serverseitige" und "clientseitige" Programmiersprache stoßen. Der Unterschied liegt darin, dass bei serverseitigen Programmiersprachen die Dynamik auf dem Server geschieht und die fertige Seite an den Benutzer ausgeliefert wird, während bei clientseitigen Programmiersprachen die Dynamik erst auf dem Rechner des Benutzers stattfindet. Wenn man das Beispiel mit der Uhrzeit nimmt, die in die Webseite eingefügt wird, so kann man sich die Vorgänge grob betrachtet wie folgt vorstellen.

Serverseitige Programmiersprache

  • Der Benutzer möchte eine Webseite aufrufen und sendet die Anfrage an den Server, auf dem die Webseite gespeichert ist. Auf dem Server bekommt die Anfrage ein Serverdienst bzw. Webserver, der für Auslieferung von Webseiten zuständig ist.
  • Der Webserver erkennt, dass die Webseite keine statische Webseite ist und Programmiercode enthält. Der Webserver weiß mit dem Programmiercode jedoch nichts anzufangen. Denn, er ist nur zuständig für die Auslieferung der Webseiten.
  • Daher schickt der Webserver die Webseite durch einen "Interpreter", z.B. PHP-Interpreter. Dieser kann die Anweisungen im Programmiercode verstehen. Wenn im Quellcode z.B. angegeben wurde, dass die Uhrzeit eingefügt werden soll, dann ermittelt der Interpreter die Uhrzeit (die Serveruhrzeit oder an einer anderen Quelle), fügt sie an die entsprechende Stelle in die Webseite ein und übergibt die Webseite wieder an den Webserver.
  • Der Webserver übermittelt die fertige Webseite an den Benutzer. Die Webseite enthält keinen Programmiercode, sondern lediglich HTML-Code, der vom Browser verarbeitet wird und den Inhalt entsprechend darstellt.

Clientseitige Programmiersprache

  • Der Benutzer möchte eine Webseite aufrufen und sendet die Anfrage an den Server, auf dem die Webseite gespeichert ist. Auf dem Server bekommt die Anfrage ein Serverdienst bzw. Webserver, der für Auslieferung von Webseiten zuständig ist.
  • Die Webseite enthält keinen serverseitigen Programmiercode, sondern clientseitigen. Da der Webserver nur für serverseitigen Programmiercode zuständig ist, wird die Webseite an den Benutzer ausgeliefert, ohne es durch einen Interpreter zu schicken.
  • Der Benutzer erhält die Webseite, die in der Regel eine Mischung aus HTML und dem clientseitigen Programmcode enthält.
  • Neben dem HTML-Code verarbeitet der Browser diesmal zusätzlich den clientseitigen Programmcode. Im Falle einer Uhrzeitabfrage wird die Uhrzeit des Clientrechners abgefragt und auf der Webseite angezeigt.

Vor- und Nachteile bei client- und serverseitiger Programmierung

Wenn man eine Webseite mit clientseitigem Programmcode erstellt, dann liegt der Nachteil darin, dass die Verarbeitung des Programmcodes vom Anwender unterbunden werden kann. Denn, theoretisch könnte man mit clientseitigem Programmcode schadhafte Vorgänge auf dem Computer des Anwenders ausführen. Daher haben alle gängigen Browser die Möglichkeit, die Verarbeitung von clientseitigem Programmcode auszuschalten. Vorteilhaft ist, dass man mit clientseitiger Programmierung die technische Umgebung des Benutzers berücksichtigen kann. Wenn man z.B. mit serverseitiger Programmierung die Uhrzeit des Servers abfragt und in die Webseite einfügt, der Benutzer aber nicht in derselben Zeitzone ist, würde aus Benutzersicht eine "falsche" Uhrzeit angezeigt werden. Mit clientseitiger Programmierung könnte man die Zeitzone des Benutzers berücksichtigen und die "richtige" Uhrzeit anzeigen.

Ein weiterer Nachteil bei serverseitiger Programmierung ist, dass die Ausführung des Programmcodes nur bei jedem Aufruf der Webseite erfolgt. Im Falle einer Uhrzeitabfrage würde z.B. die aktuelle Uhrzeit des Servers zwar eingefügt, jedoch nicht mehr aktualisiert werden. Der Benutzer müsste theoretisch jede Sekunde die Webseite neu anfordern, um die aktuelle Uhrzeit angezeigt zu bekommen. Es gibt zwar Technologien (AJAX), um Daten vom Server zu laden, ohne die Webseite neu aufzurufen. Hierfür ist jedoch der Einsatz beider Programmierarten (client- und serverseitig) notwendig und funktioniert nicht, wenn der Benutzer die Verarbeitung von clientseitigem Programmcode deaktiviert hat. Der Vorteil bei rein serverseitiger Programmierung ist, dass man nicht darauf angewiesen ist, dass der Benutzer die Ausführung von clientseitigem Programmcode einschaltet. Denn, der Programmcode wird auf dem Server verarbeitet und das hängt nicht von den Einstellungen des Benutzers ab. Insbesondere bei Vorgängen, die keinesfalls von den Einstellungen des Benutzers abhängen dürfen und Manipulationen ausgeschlossen werden sollen, setzt man auf serverseitige Programmierung.

Beispielsweise könnte man die Benutzereingaben eines Kontaktformulars mit einer clientseitigen Programmiersprache prüfen und z.B. die Länge der Postleitzahl auf 5 Ziffern beschränken. Das Problem dabei ist, dass die Ausführung von clientseitigem Programmcode vom Anwender deaktiviert werden kann. Der Benutzer könnte in diesem Fall z.B. die Ausführung des clientseitigen Programmcodes deaktivieren und in das Formularfeld 10 Ziffern oder gar schadhaften Programmcode eintippen und das Formular an den Server senden. Clientseitige Programmiersprachen sind in solchen Fällen nicht empfehlenswert und es muss serverseitig geprüft werden, was der Anwender in welcher Form eingetippt hat und bei Falscheingaben muss die weitere Verarbeitung mit einer Fehlermeldung gestoppt werden. Da der Anwender keinen Einfluss darauf hat, was auf dem Server geschieht, wird somit eine Möglichkeit zur Falscheingabe oder Manipulation unterbunden. Nachfolgend eine Übersicht, aus der ersichtlich ist, wo HTML- und Programmcode ausgeführt wird.

Server- und clientseitige Programmierung

In der Praxis sieht es meistens so aus, dass Webseiten mit einer Mischung aus HTML, serverseitigem und clientseitigem Programmcode erstellt werden. In HTML wird meistens das Grundgerüst und unter Zuhilfenahme von CSS das Aussehen der Webseite bzw. die Positionierung der Inhalte festgelegt. Clientseitige Programmiersprachen werden für "harmlose" Vorgänge verwendet, z.B. um schöne Effekte bei Bildern zu realisieren. Serverseitige Programmiersprachen verwendet man immer dann, wenn man sicherstellen will, dass das, was geschehen soll, auch tatsächlich nur in der gewünschten Form geschieht. AJAX-Technologie, um Inhalte von Server nachzuladen, ohne die Webseite neu aufzurufen, verwendet man z.B. bei sehr großen Inhalten, die dynamisch vom Server bereitgestellt werden sollen. So braucht nur der Teil vom Server geladen zu werden, der vom Benutzer betrachtet wird. Das schont Ressourcen auf dem Server und ist für den Benutzer angenehmer, da die Webseite nicht neu geladen werden muss. Bei rein serverseitiger Programmierung würde der Benutzer beim Aufruf der Webseite den gesamten Inhalt laden.