L'architecture client-serveur désigne un mode de communication entre des ordinateurs ou des logiciels. Les mots « serveur » et « client » peuvent soit désigner les ordinateurs, on parle alors de serveur informatique et de poste client ; soit désigner les logiciels fonctionnant sur ces ordinateurs, on parle alors de logiciel serveur ou de logiciel client.
- Le serveur est à l'écoute d'un réseau informatique, prêt à répondre aux requêtes envoyées par des clients.
- Les clients sont généralement pilotés par des utilisateurs. Ils prennent l'initiative d'envoyer des requêtes au serveur, puis attendent la réponse pour la donner, le cas échéant, à l'utilisateur.
- Un serveur est capable de servir plusieurs clients simultanément, jusqu'à plusieurs milliers.
L'architecture 3-Tier est une extension de l'architecture client-serveur.
Architectures client-serveur
L'architecture client/serveur correspond à la généralisation des ordinateurs de type PC dans les entreprises (dans les agences, les points de vente, …) et est une architecture à deux niveaux :
- les règles de gestion, les traitements et les accès aux données sont réalisés sur le serveur central,
- les contrôles de saisie, les enchainements des dialogues sont effectués sur le poste client.
Ce modèle minimise les flux sur le réseau et tire partie de la puissance des machines locale et centrale.
Exemples d'architectures client-serveur :
- Le fonctionnement client-serveur le plus connu est celui des sites Web. Chaque site est hébergé sur un serveur Web ; les internautes qui consultent le site utilisent un logiciel client, le navigateur Web, pour envoyer des requêtes au serveur. Dans ce cas le protocole utilisé est souvent HTTP.
L'autre système client/serveur très connu est celui du courriel, où les
courielleurs sont des clients, et les serveurs de mel des serveurs. Dans ce cas le protocole utilisé est souvent SMTP, POP, IMAP.
- Le modèle le plus classique est une relation client-serveur de données typique des architectures Oracle-Unix avec traitements (affichage, saisie) sur le poste client local et accès aux données (via SQL) sur le serveur central. Les interfaces (IHM) de présentation sont ceux typiques des applications fenêtrées (interfaces pouvant être riche et interactive: boutons, aides contextuelles, liste déroulantes, etc …).
- Le système X Window est un exemple typique d'architecture client-serveur. un logiciel serveur X Window fournit des services d'affichage graphiques, tels que création et déplacement de fenêtres, gestion des boutons, la gestion des polices de caractères, des zones de saisie et des listes déroulantes… Les applications clientes peuvent alors totalement se décharger des tâches d'affichage.
NB: dans le cas de X-Window, le client et le serveur tournent généralement sur le même machine, mais les applications peuvent s'afficher sur des machines distantes.
L'architecture client-serveur est courante dans les applications où de nombreux utilisateurs doivent accéder à une même base de données. On distingue, dans ces applications, plusieurs couches logicielles :
- La couche présentation (c'est-à-dire client) qui est la partie du logiciel que l'on trouve du côté de l'utilisateur final. Comme son nom l'indique, cette partie ne contient que l'interface utilisateur (le plus souvent, une interface graphique sous X Window, MS Windows ou Mac OS)
- La couche de gestion des données (le serveur), qui consiste en une base de données ou tout système de stockage des données
- La couche logique qui est le cœur même de l'application ; elle fait le lien entre le client et le serveur, et forme ce que l'on appelle le serveur d'application.
Ce type d'architecture en trois couches est appelé
architecture 3-tiers.
Cependant, la couche logique n'est pas nécessairement isolée : en effet, elle peut très bien être déplacée vers le serveur (sous forme, par exemple, de procédures stockées dans la base de données), ou vers le client (toute l'application se trouvant alors sur le poste client, on ne fait plus que demander des données au serveur, via par exemple ODBC ou SQLNet…). Une telle architecture en deux couches est appelée 2-tiers.
Des architectures n-tiers sont bien entendu possibles, en combinant un ou plusieurs serveurs d'application (offrant chacun des services distincts) et une ou plusieurs bases de données.
L'emplacement physique des différentes couches composant une telle application est tout à fait variable.
Dans une application 3-tiers, par exemple, les trois couches peuvent être :
- trois programmes distincts fonctionnant sur une même machine
- le client sur une machine, les deux autres couches sur une deuxième machine
- trois programmes fonctionnant chacun sur une machine distincte.
L'avantage théorique des applications client-serveur est la possibilité de remplacer une couche indépendamment des autres : pouvoir migrer par exemple une partie cliente de Visual Basic vers PowerBuilder sans avoir à modifier ni la base de données, ni le serveur d'application. Mais en pratique, tout n'est pas si rose : les couches sont en réalité rarement totalement indépendantes les unes des autres, et la modification d'une couche entraîne très souvent des modifications dans les autres. D'autre part, la complexité de l'application augmente proportionnellement au nombre de couches à développer et fiabiliser. Enfin, la maintenance de telles applications est plus complexe :
- lorsqu'une erreur survient, il n'est pas toujours évident de déterminer la couche fautive.
- lorsqu'une nouvelle version de l'application doit être livrée aux utilisateurs, toutes les couches doivent être livrées simultanément pour éviter les problèmes de désynchronisation entre les versions des clients, des serveur(s) d'application et des serveur(s) de données.
Réseau informatique | Architecture logicielle
Kliënt-bediener | Клиент-сървър | Client-Server-System | Client-server | Cliente-servidor | مشتری-خادم | שרת לקוח | Sistema client/server | クラインアントサーバモデル | 클라이언트-서버 | Client-servermodel | Klient-serwer | Cliente-servidor | Klient–server | 客户端-服务器