Client – Server – Architektur
Es gibt verschiedne Möglichkeiten, Aufgaben und Dienstleistungen innerhalb eines Netzwerkes zu verteilen. Dafür gibt es verschiedene Client – Server – Architekturen, welche die Verteilung beschreiben.
Als Client wird dabei ein Endgerät selbst als auch seine Programme bezeichnet, die auf dem Endgerät ausgeführt werden, welche über ein Netzwerk mit einem Server kommunizieren. Es wird dabei unterschieden in Fat Clients und Thin Clients. Fat Clients ist der Sammelbegriff für vollwertig ausgestattete (Rechenkapazität, Plattenspeicher, Grafikkarte) und dadurch leistungsfähige Computer. Thin Clients sind dagegen Computer, die nur minimal ausgestattet sind und daher auf Ressourcen des Servers zurückgreifen müssen bei der Abarbeitung von Aufgaben oder Erbringung von Dienstleistungen.
Als Server wird sowohl ein Computer als auch das Programm selbst bezeichnet, welches die Ressourcen bspw. für Clients über ein Netzwerk zur Verfügung stellt.
Daher wird auch in clientseitige und serverseitige Anwendungen und Technologien unterschieden. Es wird klassifiziert, je nachdem welche Rolle der Rechner einnimmt, auf dem die Anwendung läuft.
Die Kommunikation zwischen Client und Server läuft über Netzwerkprotokolle wie bspw. Transmission Control Protection (TCP) und Internet Protocol (IP).
Clientseitige Technologien
JavaApplets
Zu den clientseitigen Technologien zählt unter anderem die Verwendung von JavaApplets. JavaApplets sind kleine Applikationen, die in Java geschrieben wurden. Der Benutzer startet das Programm von einer Webseite im Webbrowser aus, ausgeführt wird es dann auf dem Client von einer Java Virtual Machine. Es ermöglicht die Aktivität auf der Client-Seite, denn JavaApplets können fast auf das gesamte Java API (Application Programming Interface) zurückgreifen. Allerdings werden JavaApplets kaum noch im Browser verwendet, weil sie als unsicher und veraltet gelten.

Serverseitige Technologien
Das Konzept beruht auf der Delegation von Client – Anfragen (HTTP Requests) an externe Komponenten. Die Weiterleitung der Anfrage an den Server funktioniert über URL bspw. unter Verwendung des Netzwerkprotokolls HTTP. Der Server erzeugt eine Antwort und gibt diese an den Client zurück. Die Rahmenwerke unterscheiden sich in der Beschreibung bzw. Implemetierung der Komponenten.
Common Gateway Interface (CGI)
CGI bietet Möglichkeit zur Anbindung externer Programme an Server.
Es ist eine Variante eine dynamische Funktion von Webseiten zu ermöglichen und bietet eine einfache Schnittstelle. Der Webserver bildet bestimmte URLs auf Programmen ab, welche vom Webserver gestartet werden. Der Datenaustausch findet über Standard-Datenströme und Umgebungsvariablen statt.
Vorteilig an CGI-Anwendungen ist, dass sie für alle Programmiersprachen erstellt werden können. Außerdem erhält die Anwendung nur Daten, die der Server passieren lässt.
Ein großer Nachteil ist die Sicherheit dieses Prinzips. Programme die von anonymen Anwendern geschrieben wurden, können auch auf den Webservern ausgeführt werden. Dies ist gerade bei geschäftskritischen Systemen problematisch im Bezug auf den Sicherheitsaspekt und mögliche Angriffe von außen.
Heutzutage ist es ein Standart für den Datenaustausch zwischen Webservern und externer Software.
JavaServlets
Servlets bezeichnen Java-Klassen, deren Objekte innerhalb eines Webservers Anfragen von Clients entgegennehmen und beantworten. Die Servlets werden über eine URL angesprochen und es wird ein Request erzeugt. Dieser wird dann entsprechend vom Server bearbeitet und es wird eine Response ausgegeben. Der Inhalt der Antwort kann dynamisch sein.
Dies funktioniert über spezielle Servlet-Container als Komponente des Webservers. Dabei wird das Servlet innerhalb eines Webcontainers instanziiert und ausgeführt wird. Die Container sind in der Lage mit JavaServlets zu interagieren, welche dann die Anfragen der Clients bearbeiten.
Servlets werden als Weiterentwicklung der CGI – Schnittstelle betrachtet.
