Académique Documents
Professionnel Documents
Culture Documents
architectures Web
1. Les types d’architectures
Dans les applications Web, la communication entre le client et le serveur est réalisée selon le protocole TCP/IP qui est
chargé du routage des données. Le transit des informations s’effectue selon le protocole HTTP pour le Web, les données
sont alors transmises entre le client et le serveur via TCP/IP. On distingue alors deux types de clients :
l Le client léger : il est aussi appelé client Web car le module d’exécution est alors un navigateur. Les applications clientes
sont composées de pages HTML/XHTML voire DHTML avec l’utilisation du langage client JavaScript .
l Le client lourd : il s’agit d’une application composée d’une interface graphique évoluée ou en mode console. Dans l’idéal, les
clients lourds communiquants ne contiennent que la logique présentation (affichage des données). Tous les traitements sont
délégués à des composants métier distants.
Il existe actuellement un grand nombre d’architectures utilisées pour le Web.
L’architecture 2tiers est composée de deux éléments, un client et un serveur. Cette architecture physique simple peut
être représentée de cette façon :
Cette architecture peut aussi être représentée avec un serveur de base de données (SGBD), le schéma est alors le
suivant :
Dans ce type d’architecture, le client assume les tâches de présentation et communique uniquement avec le serveur
d’applications. Le client est dit ’’lourd’’. Ce type d’architecture peut être développé très rapidement en fonction de la
complexité du projet. Il existe un très grand nombre d’outils de développement et de langages pour les architectures 2
tiers.
Du point de vue des inconvénients, le problème d’évolutivité, de maintenance et la mise en place lors de projets
complexes peuvent être cités.
© Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA - 1-
l La couche présentation (de premier niveau) souvent appelée IHM (Interface Homme Machine) correspond à la partie visible et
interactive. Cette partie est réalisée pour le Web en HTML en général avec JavaScript, Flash...
l La couche métier (de second niveau) correspond à la partie fonctionnelle de l’application. Les opérations à réaliser, les
fonctions d’accès aux données et les traitements sont mis à la disposition des utilisateurs et invoqués par leurs requêtes.
Pour fournir ces services, elle s’appuie parfois sur la couche accès aux données et en retour renvoie à la couche
présentation les résultats qu’elle a calculés.
l La dernière couche (de troisième niveau) gère l’accès aux données du système. Ces données peuvent être stockées sur le
même système (fichiers, fichiers XML, base de données, images...) ou sur d’autres systèmes. L’accès aux données est
transparent pour la couche métier et correspond uniquement à la préoccupation de la couche accès aux données.
D’une manière générale cette abstraction améliore la maintenance du système. Parmi les avantages de cette
architecture, la flexibilité de l’ensemble peut être citée. La partie client est composée uniquement d’affichage (pas de
programmation, de requêtes SQL...). De fait, des modifications peuvent être réalisées au niveau du SGBD sans que cela
apporte un impact sur la couche client. De même, par la suite toute nouvelle technologie peut être introduite sans tout
remettre en question. Du point de vue développement, la séparation entre le client, le serveur et le SGBD permet une
spécialisation des développeurs et une meilleure répartition des tâches et fonctions (développeur de modèle/designer,
programmeur, administrateur de bases de données...).
Le gros inconvénient de ce modèle (et le principal), est l’expertise qu’il est nécessaire d’avoir et qui est assez longue à
obtenir pour bien maîtriser chaque tiers et interconnexions. Les coûts de développement d’une architecture 3tiers sont
plus élevés que pour du 2tiers.
L’architecture ntiers a été pensée pour pallier les limitations des architectures 3tiers et concevoir des applications
puissantes et simples à maintenir. D’un point de vue théorique, cette architecture permet de solutionner les problèmes
suivants :
l Elle permet l’utilisation de clients riches.
l Elle sépare nettement tous les niveaux de l’application.
l Elle facilite la gestion des sessions.
l Elle offre de grandes capacités d’extension.
Une définition possible de ce type d’architecture est : une architecture 3tiers dans laquelle le traitement des données
(couche accès aux données ou middleware) contient luimême plusieurs couches multipliant ainsi les tiers.
Les types d’architectures en Java EE
Dans ce cas, l’application cliente peut être développée avec des composants graphiques (Swing par exemple) et faire
appel à des règles métier EJB qui accèdent à une base de données.
- 2- © Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA
Il est aussi possible de trouver des applications clientes avec JSP, EJB et base de données. Le client est un navigateur
Web. Les pages JSP accèdent aux règles métier et construisent le contenu HTML fourni au navigateur.
Un dérivé de l’architecture précédente est une Applet cliente avec JSP et base de données. Dans ce cas, le client est
encore un navigateur mais une Applet permet d’obtenir une interface utilisateur plus complexe (mais aussi plus lourde)
et plus interactive. Cette Applet peut accéder au contenu produit par des JSP. Cellesci obtiennent des données
nécessaires grâce à JDBC.
Une autre version de l’architecture précédente est JWS (Java Web Start) avec JSP et base de données. C’est
pratiquement le même cas que l’architecture avec Applet si ce n’est que le client est une application téléchargeable et
utilisable de manière autonome (sans navigateur) mais uniquement avec une connexion réseau.
© Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA - 3-
Le dernier type d’architecture repose sur l’intégration de services Web. Une application cliente accède aux données
grâce à un service Web programmé en Java.
Les architectures proposées par Java EE reposent sur le découpage des applications en plusieurs tiers aux
responsabilités clairement séparées. Les programmeurs vont développer des composants qui seront hébergés par un
serveur d’application Java EE (Tomcat, JBoss...). Les applications distribuées (réalisées sous forme de composants
distincts) permettent de diviser le logiciel en plusieurs couches appelées tiers (chaque couche représente un tiers). Le
modèle le plus courant étant l’architecture 3tiers/ntiers. Cette division facilite la maintenance et l’adaptabilité du
produit.
2. L’architecture MVC (Model View Controller)
L’architecture MVC proposée par Sun est la solution de développement Web côté serveur qui permet de séparer la partie
logique/métier de la partie présentation dans une application Web. C’est un point essentiel du développement de
projets car cela permet à toute l’équipe de travailler séparément (chacun possède ses fichiers, ses logiciels de
développement et ses composants).
- 4- © Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA
Cette architecture trouve son origine dans le langage SmallTalk au début des années 1980, ce n’est donc pas un modèle
(design pattern ) nouveau uniquement lié à Java EE. L’objectif principal est de diviser l’application en trois parties
distinctes : le modèle , la vue et le contrôleur .
Dans l’architecture MVC, nous retrouvons :
l Le modèle qui est représenté par les EJB et/ou JavaBeans et/ou systèmes de persistances (Hibernate, objets sérialisés en
XML, stockage de données par le biais de JDBC...).
l La vue qui est représentée par les JSP.
l Le contrôleur qui est représenté par les Servlets.
Principe de fonctionnement de l’architecture MVC
l 1. Le client envoie une requête HTTP au serveur. C’est en général une Servlet (ou un programme exécutable côté serveur)
qui traite la demande.
l 2. La Servlet récupère les informations transmises par le client et délègue le traitement à un composant métier adapté.
l 3. Les composants du modèle manipulent ou non des données du système d’information (lecture, écriture, mise à jour,
suppression).
l 4. Une fois les traitements terminés, les composants rendent la main à la Servlet en lui retournant un résultat. La Servlet
stocke alors le résultat dans un contexte adapté (session, requête, réponse...).
l 5. La Servlet appelle la JSP adéquate qui peut accéder au résultat.
l 6. La JSP s’exécute, utilise les données transmises par la Servlet et génère la réponse au client.
Les composants sont bien sûr plus nombreux mais également plus simples . Leurs spécificités font qu’ils pourront être
développés par des spécialistes : les Servlets et EJB par des développeurs Java, les JSP par des développeurs et
Webdesigner, les accès aux données par des spécialistes SQL... Ce découpage permet également une maintenance plus
aisée du système. Ainsi, le changement de la charte graphique sera opéré facilement en utilisant les vues sans toucher
au modèle et au contrôleur.
Afin de faciliter l’utilisation du modèle MVC dans les architectures Java EE, des frameworks (outils composés de
spécifications, librairies, outils...) de développement entièrement basés sur ce modèle ont été développés (Apache
Struts/Spring). Le schéma complexe cidessous reprend un exemple de mise en place d’une telle architecture dans un
projet d’entreprise.
© Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA - 5-
3. Les différents modules Java EE
Comme indiqué précédemment, les architectures Java EE offrent de multiples possibilités. Il est donc nécessaire
d’organiser les différents éléments d’une application en fonction de leur rôle.
Module Web
Le module Web contient les éléments d’une application Java EE qui vont permettre l’utilisation de cette application au
travers d’un navigateur Web et de toute application utilisant le protocole HTTP. Les éléments regroupés dans ce module
Web sont les Servlets, les JSP et les ressources statiques de l’application Internet (images, JavaScripts, fichiers
statiques...). Il y a également des bibliothèques dynamiques développées en Java fournies sous forme de fichiers .jar et
qui sont utilisées par les Servlets et/ou JSP (manipulation d’images, de fichiers...). Les modules Web possèdent un
descripteur de déploiement, le fichier web.xml. L’ensemble des fichiers est regroupé dans un fichier d’extension .war
signifiant WebARchive.
Module EJB/composants métier
Les composants EJB sont constitués de fichiers de code Java. Il y a aussi dans ce module des bibliothèques au
format .jar. Les modules sont ensuite assemblés en archive d’extension .jar.
Module Client
Il est possible d’utiliser un client riche avec une interface graphique développée en utilisant les API de programmation
Java comme Swing et/ou AWT. Un module client permet un assemblage en classes et fournit un descripteur de
déploiement. Le module client est un fichier d’archive portant l’extension .jar.
- 6- © Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA