In dieser Lektion betrachten wir die Beziehung zwischen Clients und Servern. Die Client/Server-Architektur bietet unbegrenzte Kommunikationsmöglichkeiten und macht das Internet erst möglich . Wir behandeln ein grundlegendes Verständnis des Client/Server-Modells, das später zum Aufrufen einer API verwendet wird. Es würde den Rahmen dieser Lektion sprengen, eine umfassende Ressource für die Client/Server-Architektur abzudecken. Stattdessen konzentrieren wir uns auf die Hauptprinzipien der Client/Server-Kommunikation.
Sie können:
Das Client-Server-Modell der Kommunikationstechnologien ist eine Reihe verteilter Anwendungsarchitekturen und Netzwerkoperationen, die die Arbeitslasten zwischen den Anbietern eines Dienstes, den sogenannten Servern , und dem Dienstanforderer, den sogenannten Clients , verwalten.
Obwohl das Client-Server-Modell von Programmen innerhalb eines einzelnen Computers verwendet werden kann, konzentrieren wir uns auf den Aspekt, der sich auf vernetzte Umgebungen bezieht. In diesem Fall baut der Client eine Verbindung zum Server über ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN) wie das Internet auf. Haben Sie schon einmal Xbox Live gespielt oder das PlayStation Network genutzt? Ihre Xbox One ist der Client, und wenn sie sich beim Netzwerk anmeldet, kontaktiert sie die Xbox Live-Server, um Spielressourcen wie Updates, Videos und Spieldemos abzurufen.
Eine typische mehrschichtige Client-Server-Architektur, die die meisten von uns im Alltag verwenden, kann wie folgt dargestellt werden.
Ein Client ist ein Computerhardwaregerät oder eine Computersoftware, die einen von einem Server bereitgestellten Dienst anfordert. Der Server befindet sich oft (aber nicht immer) auf einem separaten physischen Computer.
Ein Server ist ein physischer Computer, der speziell für die Ausführung von Diensten zur Erfüllung der Bedürfnisse von Kunden bestimmt ist. Abhängig vom ausgeführten Dienst kann es sich um einen Dateiserver, einen Datenbankserver, einen Heimmedienserver, einen Druckserver, einen E-Mail-Server oder einen Webserver handeln.
Die Idee, dass ein Client und ein Server über ein Netzwerk kommunizieren, ermöglicht die Anzeige von Websites und die Interaktion mit Webanwendungen (wie Gmail, Facebook, LinkedIn). Dieses Modell beschreibt die Geben-und-Nehmen-Beziehung zwischen Client und Server in einer Webanwendung und regelt, wie Informationen zwischen Computern übertragen werden.
Sehen wir uns an, wie eine einfache Webanwendung aussieht, die eine Anfrage von einem Webclient entgegennimmt und entsprechend bedient.
Eine Webanwendung (Web-App) ist ein Anwendungsprogramm, das auf einem Remote-Server gespeichert und über eine Browserschnittstelle über das Internet bereitgestellt wird. Webdienste sind per Definition Web-Apps und viele, wenn auch nicht alle Websites enthalten Web-Apps. Jede Website-Komponente, die eine Funktion für den Benutzer ausführt, gilt als Web-App. Die Suchmaschine von Google ist eine Web-App, doch ihr Grundkonzept unterscheidet sich kaum von einem Telefonbuch, das die Suche nach Namen oder Nummern ermöglicht.
Die meisten Web-Apps verwenden tatsächlich eine Browser-Schnittstelle für die Interaktion, d. h. Endbenutzer fordern Zugriff und Informationen/Dienste von diesen Anwendungen über eine moderne Web-Browser-Schnittstelle an. Es gibt Hunderte von Möglichkeiten, eine Webanwendung zu erstellen und zu konfigurieren, aber die meisten folgen derselben Grundstruktur: einem Webclient, einem Webserver und einer Datenbank.
Der Kunde ist das, mit dem der Endbenutzer interagiert. „Clientseitiger“ Code ist tatsächlich für den Großteil dessen verantwortlich, was ein Benutzer tatsächlich sieht. Für das Anfordern einiger Informationen als Webseite kann die Clientseite verantwortlich sein für Folgendes:
Die meisten dieser Aufgaben werden von HTML/CSS/JavaScript-ähnlichen Technologien verwaltet, um die Informationen und den Stil der Seite zu strukturieren und interaktive Objekte für Navigation und Fokus bereitzustellen.
Ein Webserver in einer Webanwendung überwacht die von den Clients eingehenden Anforderungen. Wenn Sie einen HTTP-Server (HyperText Transfer Protocol – Sprache des Internets) einrichten, richten wir ihn so ein, dass er eine Portnummer abhört. Eine Portnummer ist immer mit der IP-Adresse eines Computers verknüpft. Sie können sich Ports als separate Kanäle auf einem Computer vorstellen, die wir zur Ausführung verschiedener Aufgaben verwenden können: Ein Port könnte auf www.facebook.com surfen, während ein anderer Ihre E-Mails abruft. Dies ist möglich, weil jede der Anwendungen (der Webbrowser und der E-Mail-Client) unterschiedliche Portnummern verwendet.
Sobald Sie einen HTTP-Server so eingerichtet haben, dass er einen bestimmten Port überwacht, wartet der Server auf Client-Anfragen, die an diesem bestimmten Port eingehen. Nach der Authentifizierung des Clients führt der Server alle in der Anfrage angegebenen Aktionen aus und sendet alle angeforderten Daten über eine HTTP-Antwort.
Datenbanken sind die Grundlage der Webarchitektur. Eine SQL/NoSQL-Datenbank oder ein ähnlicher Datenbanktyp ist ein Ort, an dem Informationen gespeichert werden, damit sie leicht abgerufen, verwaltet und aktualisiert werden können. Wenn Sie beispielsweise eine Social-Media-Site erstellen, können Sie eine Datenbank verwenden, um Informationen über Ihre Benutzer, Beiträge, Kommentare usw. zu speichern. Wenn ein Besucher eine Seite anfordert, stammen die in die Seite eingefügten Daten aus der Datenbank der Site. Ermöglicht Benutzerinteraktionen in Echtzeit mit Websites wie Facebook oder Apps wie Gmail.
Im Beispielbild oben können wir das oben erwähnte Setup in Aktion sehen. Ein Browser sendet eine Anfrage an einen Webserver, indem er seine Domain aufruft, z. B. www.google.com. Je nachdem, wer der Anforderer ist, sammelt der Server die notwendigen Informationen für eine SQL-Datenbank. Diese Informationen werden als HTML-Code verpackt und an den Client zurückgesendet. Der Webbrowser liest die in HTML eingebetteten Strukturierungs- und Stilinformationen und zeigt dem Benutzer die Seite entsprechend an.
Es gibt viele Details zu Client/Server-Architekturen und wie sie sich im Internet manifestieren. Wir werden uns etwas mehr auf die in diesem Abschnitt hervorgehobenen Ideen konzentrieren, indem wir einen Client einrichten und Anfragen in Python stellen. Diese Fähigkeiten werden uns helfen, Daten von den Servern für unsere analytischen Experimente anzufordern. Hier sind einige zusätzliche Ressourcen für Sie, wenn Sie tiefer in das Client-Server-Modell und dessen Einrichtung für viele verschiedene Architekturen eintauchen möchten.
In dieser Lektion haben wir uns mit den Grundlagen des Client-Server-Modells befasst und uns darauf konzentriert, wie dieses Modell für webbasierte Anwendungen implementiert wird. Wir haben uns die Rolle von Web-Clients, Webservern und Datenbanken angesehen, die Client-Informationen enthalten. In den folgenden Lektionen erfahren Sie, wie Sie diese Ideen mit Python umsetzen können!