Client-serveur
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.
Un réseau basé sur un seul serveur.
Un réseau basé sur le peer-to-peer.
Caractéristiques des clients
- Il lance toujours des requêtes aux serveurs.
- Attente des réponses.
- Reçoit les réponses.
- Se connecte généralement à un petit nombre de serveurs en même temps.
- Il interagit généralement directement avec les utilisateurs finaux en utilisant n'importe quelle interface utilisateur, telle qu'une interface graphique.
Caractéristiques du serveur
- Attendez toujours une demande de l'un des clients.
- Répond aux demandes des clients puis leur fournit les données demandées.
- Un serveur peut communiquer avec d'autres serveurs afin de répondre à une demande d'un client.
- Si des informations supplémentaires sont nécessaires pour traiter une demande (ou si la sécurité est mise en œuvre), un serveur peut demander des données supplémentaires (mots de passe) à un client avant de traiter une demande.
- Les utilisateurs finaux n'interagissent généralement pas directement avec un serveur, mais utilisent un client.
Avantages
- Dans la plupart des cas, une architecture client-serveur permet de répartir l'aggravation des rôles et des responsabilités d'un système informatique entre plusieurs ordinateurs indépendants qui ne se connaissent qu'à travers un réseau, l'un des avantages de ce modèle est donc une plus grande facilité de maintenance. Par exemple, il est possible de remplacer, de réparer, de mettre à niveau ou même de déplacer un serveur alors que ses clients ne sont pas informés et ne sont pas affectés par ce changement. Cette indépendance vis-à-vis du changement est également appelée encapsulation.
- Toutes les données sont stockées sur les serveurs, qui disposent généralement de meilleurs contrôles de sécurité que la plupart des clients. Les serveurs peuvent mieux contrôler l'accès et les ressources, afin de garantir que seuls les clients disposant des autorisations appropriées puissent accéder aux données et les modifier.
- Comme le stockage des données est centralisé, les mises à jour de ces données sont beaucoup plus faciles pour les administrateurs que ce qui serait possible dans une architecture P2P. Dans une architecture P2P, les mises à jour des données peuvent devoir être distribuées et appliquées à chaque "pair" du réseau, ce qui est à la fois long et source d'erreurs, car il peut y avoir des milliers, voire des millions de pairs.
- De nombreuses technologies client-serveur avancées sont déjà disponibles et ont été conçues pour assurer la sécurité, des interfaces conviviales et une facilité d'utilisation.
- Il fonctionne avec de nombreux clients différents ayant des spécifications différentes.
Inconvénients
- Le blocage du trafic sur les réseaux est l'un des problèmes liés au modèle client-serveur. Lorsque le nombre de demandes simultanées des clients vers un serveur donné augmente, le serveur peut être surchargé. Par contraste avec un réseau P2P, dont la largeur de bande augmente en fait à mesure que de nouveaux nœuds sont ajoutés, puisque la largeur de bande globale du réseau P2P peut être calculée approximativement comme la somme des largeurs de bande de chaque nœud de ce réseau.
- Si l'on compare le modèle client-serveur au modèle Peer to Peer, en cas de défaillance d'un serveur, les demandes des clients ne peuvent être satisfaites mais dans le cas des réseaux P2P, les serveurs sont généralement répartis entre de nombreux nœuds. Même si un ou plusieurs nœuds échouent, par exemple si un nœud ne parvient pas à télécharger un fichier, les nœuds restants devraient toujours disposer des données nécessaires pour terminer le téléchargement.
Exemples
- Les types de clients spécifiques comprennent : les navigateurs web, les clients de messagerie électronique et les clients de chat en ligne.
- Les types de serveurs spécifiques comprennent : les serveurs web, les serveurs FTP, les serveurs de bases de données, les serveurs de courrier électronique, les serveurs de fichiers, les serveurs d'impression. La plupart des services web sont également des types de serveurs.
Questions et réponses
Q : Qu'est-ce que l'architecture logicielle client-serveur ?
R : L'architecture logicielle client-serveur est un modèle 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.
Q : Comment fonctionne une application client-serveur ?
R : Une application client-serveur est un système distribué composé d'un logiciel client et d'un logiciel serveur. Le processus client initie toujours une connexion avec le serveur, tandis que le processus serveur attend toujours les demandes d'un client quelconque.
Q : Que se passe-t-il lorsque le processus client et le processus serveur sont tous deux exécutés sur le même ordinateur ?
R : Lorsque le processus client et le processus serveur sont tous deux exécutés sur le même ordinateur, on parle d'une configuration à siège unique.
Q : Quels sont les avantages de l'utilisation d'une application client-serveur ?
R : L'utilisation d'une application client-serveur offre un meilleur moyen de partager les charges de travail entre plusieurs ordinateurs ou utilisateurs.
Q : Qui initie les connexions dans les applications client-serveur ?
R : Le processus client initie toujours les connexions dans les applications client-serveur.
Q : Qui attend les demandes dans les applications serveur client ?
R : Le processus serveur attend toujours les demandes dans les applications serveur client.
Q : Comment plusieurs ordinateurs ou utilisateurs peuvent-ils partager des charges de travail entre eux ?
R : Plusieurs ordinateurs ou utilisateurs peuvent partager des charges de travail en utilisant un système distribué tel qu'une application client-serveur.