Client et serveur Web

De Wikipatsh
Client serveur.jpg

Les technologies actuelles s’appuient sur une interface facilement accessible, comme à partir d’un navigateur Internet, qui permet d’accéder aux services proposés par l’entreprise. On appelle cette démarche le client/serveur où un utilisateur interagit avec un service par l’intermédiaire de requêtes. Ainsi, les personnels, les clients ou les fournisseurs d’une entreprise ont accès à une sélection de services par l’intermédiaire d’un serveur et disposent instantanément de l’information souhaitée (niveau des stocks pour un produit, délai de livraison d’une pièce) ou échangent des informations (bon de commande électronique, etc.).

Architecture client/serveur

Dans un environnement client/serveur, les machines clientes, faisant partie du réseau, contactent un serveur, une machine généralement très puissante en termes de capacités d’entrée-sortie, qui leur fournit des services, à savoir des programmes fournissant des données telles que l’heure, la fiche d’un produit, un fichier, etc. Les services sont exploités par des programmes, appelés programmes clients, s’exécutant sur les machines clientes.

On parle ainsi de client (client Web, client léger, client FTP, client de messagerie, etc.) lorsque l’on désigne un programme tournant sur une machine cliente, capable de traiter des informations qu’il récupère auprès d’un serveur (dans le cas du client Web il s’agit de pages Web, tandis que pour le client de messagerie il s’agit de courrier électronique).

Avantages de l’architecture client/serveur

Le modèle client/serveur est recommandé pour des réseaux nécessitant un grand niveau de fiabilité, ses principaux atouts sont :

  • Des ressources centralisées : étant donné que le serveur est au centre du réseau, il peut gérer des ressources communes à tous les utilisateurs, comme une base de données centralisée, afin d’éviter les problèmes de redondance et de contradiction.
  • Une meilleure sécurité : le nombre de points d’entrée permettant l’accès aux données est moins important.
  • Une administration au niveau serveur : les clients ayant peu d’importance dans ce modèle, ils ont moins besoin d’être administrés.
  • Un réseau évolutif : grâce à cette architecture il est possible de supprimer ou rajouter des clients sans perturber le fonctionnement du réseau et sans modification majeure.

Inconvénients du modèle client/serveur

L’architecture client/serveur a tout de même quelques lacunes parmi lesquelles :

  • Un coût élevé dû à la technicité du serveur.
  • Un maillon faible : le serveur est le seul maillon faible du réseau client/serveur, étant donné que tout le réseau est architecturé autour de lui ! Heureusement, le serveur a une grande tolérance aux pannes (notamment grâce au système RAID).

Fonctionnement d’un système client/serveur

Un système client/serveur fonctionne selon le schéma suivant :

  • Le client émet une requête vers le serveur grâce à son adresse IP et le port, qui désigne un service particulier du serveur.
  • Le serveur reçoit la demande et répond à l’aide de l’adresse de la machine cliente et de son port.
  • Pour augmenter la disponibilité, faciliter la montée en charge et sa répartition et faciliter la gestion des ressources, on peut associer plusieurs serveurs indépendants entre eux. On crée ainsi une grappe de serveurs ou cluster qui apparaît comme un ordinateur unique et peut réduire les coûts face à un supercalculateur par exemple.

Architecture mainframe

Les premiers réseaux informatiques étaient architecturés autour d’un mainframe, un ordinateur central de grande puissance chargé de gérer les sessions utilisateurs des différents terminaux qui lui étaient reliés. Cette architecture permet ainsi de consolider, c’est-à-dire de gérer de manière centralisée, l’ensemble des applications métiers de l’entreprise.

Cependant, la performance du système tout entier repose sur les capacités de traitement de l’ordinateur central, raison pour laquelle ce modèle, qualifié d’informatique lourde, est devenu obsolète compte tenu de la puissance de traitement que nécessitent les SI modernes. Par ailleurs, dans un environnement mainframe, les terminaux du réseau ne peuvent voir que le serveur central.

Architectures multiniveaux

Architecture à 2 niveaux

L’architecture à deux niveaux (aussi appelée architecture 2-tier, tier signifiant rangée en anglais) caractérise les systèmes client/serveur pour lesquels le client demande une ressource et le serveur la lui fournit directement, en utilisant ses propres ressources, sans faire appel à une autre application afin de fournir une partie du service.

Architecture à 3 niveaux

Dans l’architecture à trois niveaux (appelée architecture 3-tier), il existe un niveau intermédiaire, c’est-à-dire que l’on a généralement une architecture partagée entre :

  • Un client, c’est-à-dire l’ordinateur demandeur de ressources, équipée d’une interface utilisateur (généralement un navigateur Web ou une app) chargée de la présentation.
  • Le serveur d’applications (appelé également middleware) chargé de fournir la ressource mais faisant appel à un autre serveur.
  • Le serveur de données fournissant au serveur d’application les données dont il a besoin.

Attention !

Étant donné l’emploi massif du terme d’architecture à 3 niveaux, celui-ci peut parfois désigner aussi les architectures suivantes : partage d’applications entre client, serveur intermédiaire, et serveur d’entreprise ; partage d’applications entre client, serveur d’applications, et serveur de base de données d’entreprise.

L’architecture à 3 niveaux connaît aussi une évolution avec l’architecture à n niveaux (appelée architecture n-tiers), où le middleware comprend également de multiples couches. Il devient ainsi possible d’ajouter ou de retirer des programmes au serveur d’application sans toucher aux deux autres niveaux de l’architecture.

Comparaison des deux types d’architecture

L’architecture à deux niveaux est donc une architecture client/serveur dans laquelle le serveur est polyvalent, capable de fournir directement l’ensemble des ressources demandées par le client.

Dans l’architecture à trois niveaux et à n-tiers en revanche, les applications au niveau serveur sont délocalisées. Chaque serveur est spécialisé dans une tâche (serveur Web/serveur de base de données par exemple). Les architectures à trois niveaux et n-tiers permettent :

  • ➤ Une plus grande flexibilité/souplesse.
  • ➤ Une sécurité accrue car la sécurité peut être définie indépendamment pour chaque service, et à chaque niveau.
  • ➤ De meilleures performances, étant donné le partage des tâches entre les différents serveurs.
  • ➤ Un nombre accru d’applications peuvent se greffer de façon indépendante et compatible avec les systèmes existants.
  • ➤ Une facilité pour sous-traiter tout ou partie du patrimoine applicatif.

Architecture multiniveaux

Dans l’architecture à 3 niveaux, chaque serveur (niveaux 2 et 3) effectue une tâche (un service) spécialisée. Un serveur peut donc utiliser les services d’un ou plusieurs autres serveurs afin de fournir son propre service. Par conséquent, l’architecture à trois niveaux s’avère déjà une architecture à n niveaux potentielle… Dans une architecture à n niveau, le rôle du serveur d’application se voit renforcer.

Type de clients

Client léger

Le terme client léger (parfois client pauvre, thin client) désigne une application accessible via une interface Web (en HTML pour HyperText Markup Language) consultable à l’aide d’un navigateur Web ou une app, où la totalité de la logique métier est traitée du côté du serveur. Pour ces raisons, le navigateur est parfois appelé client universel.

L’origine du terme lui-même provient de la faible interactivité que proposait alors le langage HTML. C’est pourquoi, l’arrivée de HTML 5, tourné vers l’interactivité et le multimédia, a consacré le client léger comme interface universelle, que ce soit sur PC fixes et portables, tablettes, netbooks, smartphones, tablettes et GPS.

Le fait que l’essentiel des traitements soit réalisé du côté du serveur et que l’interface graphique est envoyée au navigateur à chaque requête permet une grande souplesse de mise à jour. En contrepartie, l’application doit s’affranchir des différences d’interprétation du code HTML par les différents navigateurs et l’ergonomie de l’application possède un champ réduit.

Client lourd

Le terme client lourd (fat client ou heavy client) désigne une application cliente graphique exécutée sur le système d’exploitation de l’utilisateur. Un client lourd possède généralement des capacités de traitement évoluées et peut posséder une interface graphique sophistiquée. Néanmoins, ceci demande un effort de développement et tend à mêler la logique de présentation (l’interface graphique) avec la logique applicative (les traitements).

Ce type d’applications étant généralement installé sur le système d’exploitation de l’utilisateur, une nouvelle version doit être installée afin de la faire évoluer. Pour y remédier, les éditeurs d’applications lourdes les dotent généralement d’une fonctionnalité exécutée au lancement de l’application, permettant de vérifier sur un serveur distant si une version plus récente est disponible et le cas échéant propose à l’utilisateur de la télécharger et de l’installer.

Client riche

Un client riche est un compromis entre le client léger et le client lourd. Son objectif est donc de proposer une interface graphique, décrite avec une grammaire de description basée sur la syntaxe XML, permettant d’obtenir des fonctionnalités similaires à celles d’un client lourd (glisser-déposer, onglets, multifenêtrage, menus déroulants, etc.).

Les clients riches permettent ainsi de gérer l’essentiel des traitements du côté du serveur. Les données sont ensuite transmises dans un format d’échange standard via les services Web utilisant la syntaxe XML (SOAP, XML-RPC), puis interprétées par le client riche.

Les clients riches sont souvent intégrés aux navigateurs sous forme de plug-ins ou indépendamment du navigateur sous forme de widgets (raccourci entre Windows et gadget).

Aujourd’hui, les clients riches ont donné naissances aux applications Internet riches (RIA, Rich Internet Applications), fréquemment incluses dans la technologie client riche, car elles proposent une ergonomie enrichie tout en restant déployées au niveau des serveurs. Le navigateur Web jouant ici le rôle d’environnement d’exécution. Des technologies comme Eclipse RCP, Java Web Start ou NetBeans permettent de produire du pur client lourd.

Les principaux standards permettant de définir une application riche sont les suivants :

  • ➤ XAML (eXtensible Application Markup Language), prononcez « zammel », un standard XML proposé par Microsoft, utilisé notamment dans les applications utilisant le framework. NET.
  • ➤ XUL, prononcez « zoul », un standard XML proposé par la fondation Mozilla, utilisé par exemple dans le client de messagerie Mozilla Thunderbird ou dans le navigateur Mozilla Firefox.
  • ➤ Flash et Flex, standard XML proposé par la société Adobe.
  • ➤ Siverlight, basé sur XAML, développé par Microsoft intégrant sa plateforme. Net.
  • ➤ Ajax (Asynchroneous JavaScript & XML), promu par de nombreux acteurs.
  • ➤ Eclipse (plateforme de développement), en mode open source (logiciel libre).
  • ➤ Java (créé par la société Sun Microsystems, groupe Oracle), langage de programmation informatique orienté objet.