HTTP Client-Server-Modell


HTTP-Server

Ein HTTP-Server (Webserver) ist ein Dienstleistungs-Programm. Wie fast jedes andere Server-Programm wird ein Webserver nicht selbst aktiv, sondern wartet auf Aufträge.

Wenn über das Netzwerk ein Auftrag an das Webserver-Programm eintrifft, dann versucht es, diesen zu erfüllen. Der Auftrags-Text muss genau nach den Regeln des HTTP-Standards formuliert sein.

In einem typischen Auftrag (HTTP-Request) ist der Pfad zu einer Datei angegeben. Der Webserver versucht, diese Datei in seinem Arbeits-Verzeichnis zu finden. Das Server-Programm hat keinen Zugriff auf das gesamte Dateisystem des Server-PC sondern nur auf einen genau festgelegten Teil davon.

Wenn der Webserver die gewünschte Datei findet, dann sendet er ihren Inhalt an den HTTP-Client (Browser) zurück.
Andernfalls sendet der Webserver den HTML-Text einer Fehlermeldung. Dieser einfache Fall trifft allerdings nur für 'statische' Dateien zu (z.B. Webseiten *.html, Grafik-Dateien *.svg, *.gif, *.jpg, *.png usw), die ihren Inhalt nicht ändern.



Das Server-(PHP)-Programm kann die erhaltenen Daten (GET-Ar4gumente) lesen und beliebig verwenden, z.B. um Form und Inhalt einer Antwort-Webseite variabel zu gestalten.



Man verwendet AJAX, nicht zum Laden ganzer Dokumente sondern um neue Daten in ein vorhandenes Dokument einzusetzen. Daher ist die Menge der übertragenen Daten meist wesentlich geringer und die Server-Programme sind einfacher.


Datenbank-Server

Alle modernen Programmiersprachen (darunter → PHP) bieten Möglichkeiten zur Kommunikation mit einem Datenbank-Server-Programm. Die strichlierten Linien im Diagramm deuten an, dass sich das Datenbank-Server-Programm am gleichen PC wie das Webserver-Programm befinden kann, oder auf einem eigenen PC.

Das Diagramm zeigt, dass der HTTP-Client (Browser) auch in diesem Fall Dateien *.php anfordert. Wie bei anderen PHP-Dateien übergibt das Webserver-Programm die PHP-Datei zur Ausführung an das PHP-Interpreter-Programm.

Das PHP-Empfangs-Programm erzeugt auch in diesem Fall einen Text, allerdings nicht nach HTML-Regeln sondern nach den Regeln der Datenbank-'Sprache' SQL. Der fertige SQL-Text wird an das Datenbank-Server-Programm gesendet. Dieses PHP-Programm 'übersetzt' den Auftrag des Clients in eine für den Datenbank-Server verständliche Form.

Der Datenbank-Server versucht, den erhaltenen SQL-Auftrag zu erfüllen. Er sendet die Ergebnis-Daten an den Webserver, welcher sie an ein PHP-Programm übergibt. Dieses Programm 'verpackt' die erhaltenen Daten in HTML-Text: Es übersetzt die Daten in eine für den Browser verständliche Form.

Der fertige HTML-Text wird an das Browser-Programm gesendet, welches daraus eine Webseite erzeugt. In der Webseite sind die vom Datenbank-Server erhaltenen Daten in brauchbarer Form enthalten, z.B. als HTML-Tabelle oder SVG-Objekt-Grafik.
Am Client-PC kann man zwar oft erraten, jedoch nicht mit Sicherheit feststellen, welcher Teil des HTML-Textes aus der Datenbank stammt.

SVG Objekt-Grafik


Die Objekt-Grafik dieses Beispiels ist in eine eigenständige Mini-Webseite (Web-App) eingebetter, welche nur die Grafik und das Formular zur Steuerung enthält.
▶  Mit diesem Link wird die interaktive ↗ Web-App mit dem HTTP-Diagramm in einem eigenen Browser-Tab geladen.

Die Mini-Webseite verwendet keine externen Resourcen und ist daher unbegrenzt portabel. Zum Laden wird hier kein QR-Code angegeben, weil die Grafik für den kleinen Bildschirm eines SmartPhones zu viele Details enthält.
Sie können den ↗  Quelltext anzeigen, die Zeilen-Nummern mit MausKlick abschalten und den Text in einer Datei *.html am eigenen Arbeits-PC speichern: Die Datei wird von jedem modernen Browser angezeigt, lässt sich genauso wie hier interaktiv steuern oder in eigene Webseiten einbetten.

Die Details der Programme werden hier nicht kommentiert, weil sie für didaktische Zwecke zu umfangreich sind. Zum Verständnis sind einfache Kenntnisse von → SVG und fortgeschrittene Kenntnisse von → Javascript erforderlich.