In der Informatik ist Client-Server ein Software-Architekturmodell, das aus zwei Teilen besteht, Client-Systemen und Server-Systemen, die beide über ein Computernetzwerk oder auf demselben Computer kommunizieren. Eine Client-Server-Anwendung ist ein verteiltes System, das sowohl aus Client- als auch aus Server-Software besteht. Der Client-Prozess initiiert immer eine Verbindung zum Server, während der Server-Prozess immer auf Anfragen von beliebigen Clients wartet.
Wenn sowohl der Client- als auch der Server-Prozess auf demselben Computer laufen, spricht man von einer Einzelplatzinstallation.
Eine andere Art von verwandter Software-Architektur wird als Peer-to-Peer bezeichnet, weil jeder Host oder jede Anwendungsinstanz gleichzeitig als Client und Server fungieren kann (im Gegensatz zu zentralisierten Servern des Client-Server-Modells) und weil jeder gleichwertige Verantwortlichkeiten und Status hat. Peer-to-Peer-Architekturen werden oft mit dem Akronym P2P abgekürzt.
Die Client-Server-Beziehung beschreibt die Beziehung zwischen dem Client und der Art und Weise, wie er eine Dienstanforderung an den Server stellt und wie der Server diese Anforderungen annehmen, sie verarbeiten und die angeforderten Informationen an den Client zurücksenden kann. Die Interaktion zwischen Client und Server wird häufig mit Sequenzdiagrammen beschrieben. Sequenzdiagramme sind in der Unified Modeling Language standardisiert.
Heute sind sowohl Client-Server- als auch P2P-Architekturen weit verbreitet.
Der Grundtyp der Client-Server-Softwarearchitektur verwendet nur zwei Arten von Hosts: Clients und Server. Diese Art von Architektur wird manchmal auch als zweistufig bezeichnet. Die zweischichtige Architektur bedeutet, dass der Client als eine Schicht und der Server-Prozess als die andere Schicht fungiert.
Die Client-Server-Software-Architektur ist zu einem der grundlegenden Modelle des Netzwerk-Computings geworden. Viele Arten von Anwendungen wurden unter Verwendung des Client-Server-Modells geschrieben. Standard-Netzwerkfunktionen wie E-Mail-Austausch, Web-Zugang und Datenbankzugriff basieren auf dem Client-Server-Modell. Zum Beispiel ist ein Web-Browser ein Client-Programm auf dem Benutzer-Computer, das auf Informationen auf einem beliebigen Web-Server in der Welt zugreifen kann.