En informatique, le client-serveur est un modèle d'architecture logicielle composé de deux parties, les systèmes clients et les systèmes serveurs, qui communiquent tous deux sur un réseau informatique ou sur le même ordinateur. Une application client-serveur est un système distribué composé de logiciels clients et serveurs. Le processus client établit toujours une connexion avec le serveur, tandis que le processus serveur attend toujours les demandes d'un client.
Lorsque le processus client et le processus serveur tournent sur le même ordinateur, on parle de configuration à siège unique.
Un autre type d'architecture logicielle connexe est connu sous le nom de "peer-to-peer", parce que chaque hôte ou instance d'application peut agir simultanément comme client et comme serveur (contrairement aux serveurs centralisés du modèle client-serveur) et parce que chacun a des responsabilités et un statut équivalents. Les architectures "peer-to-peer" sont souvent abrégées par l'acronyme P2P.
La relation client-serveur décrit la relation entre le client et la façon dont il fait une demande de service au serveur, et comment le serveur peut accepter ces demandes, les traiter et renvoyer les informations demandées au client. L'interaction entre le client et le serveur est souvent décrite à l'aide de diagrammes de séquence. Les diagrammes de séquence sont normalisés dans le langage de modélisation unifié.
Les architectures client-serveur et P2P sont aujourd'hui largement utilisées.
Le type de base de l'architecture logicielle client-serveur n'utilise que deux types d'hôtes : les clients et les serveurs. Ce type d'architecture est parfois appelé architecture à deux niveaux. L'architecture à deux niveaux signifie que le client agit comme un niveau et le processus du serveur comme l'autre niveau.
L'architecture logicielle client-serveur est devenue l'un des modèles de base de l'informatique de réseau. De nombreux types d'applications ont été écrits en utilisant le modèle client-serveur. Les fonctions standard en réseau, telles que l'échange de courrier électronique, l'accès au web et aux bases de données, sont basées sur le modèle client-serveur. Par exemple, un navigateur web est un programme client sur l'ordinateur de l'utilisateur qui peut accéder à des informations sur n'importe quel serveur web dans le monde.


