SlideShare une entreprise Scribd logo
Architecture en couches
(N-Tiers)
Modèle MVC
Pr Abderrahim Marzouk
Département de Mathématiques et
Informatique
Master RSI 2019-2020
1
Introduction
Si nous codons une application en mélangeant
le code responsable des traitements métier au
code responsable du stockage des données.
Alors, il devient impossible d'exécuter
séparément l'un ou l'autre. Et ceci peut avoir
des inconvénients pour plusieurs raisons :
2
Introduction
• Il est impossible par exemple de changer de mode de
stockage. Que ce soit vers un autre SGBD, ou vers un
autre système, cela impliquerait une réécriture
complète de toute l’application, car le code métier est
mélangé et dépendant du code assurant le stockage.
• impossible de tester le code métier de l'application
sans faire intervenir le stockage (BD, etc.)
• impossible de ne tester que le code relatif au stockage
des données, obligation de lancer le code métier.
3
Introduction
Un code mélangé est bien plus difficile à
maintenir et à faire évoluer qu'un code
proprement découpé et organisé.
4
Application
(Code mélangé)
Découpage
Couche 1
Couche 2
Couche n
Une couche ?
Couche logicielle
Une couche logicielle d’une application permet de
séparer ou isoler une partie de son code qui a une
responsabilité unique ou une tâche précise et bien
définie comme:
• L’accès aux données
• Les traitements métier appliqués aux données
• L’interaction avec les utilisateurs
Une couche peut évoluer sans impacter ou peu les
autres couches (couplage faible ente les couches)
5
Une architecture en couches ou N-tiers
IHM
Une architecture en couches ou N-tiers est une façon
de développer ou organiser les applications en
plusieurs couches logicielles empilées les unes sur les
autres.
6
Couche Présentation
Couche Service
Couche d’Accès aux Données
BD
Communication entre couches
Chaque couche ne communique qu’avec la
couche immédiatement en dessous d'elle et n'a
aucune connaissance des couches supérieures.
7
Couche i
Couche i+1
Couche i+2
Valeur ajoutée des architectures
en couches
La séparation par couches de responsabilités sert à
découpler au maximum une couche de l'autre afin
d'éviter l'impact d'évolutions futures de
l'application.
Par exemple: si l’on est amené à devoir changer de
base de données , seule la couche d'accès aux
données sera impactée, la couche de service et la
couche de présentation ne seront pas concernées
car elles auront été découplées des autres.
8
Exemple: Architecture 3-Tier
9
Les différentes couches d’une
architecture 3-tiers
• Couche d’accès aux données
• Couche métier
• Couche présentation
10
Couche d’accès aux données
DAO (Data Access Object)
La couche DAO va communiquer avec le système de
stockage et va contenir les interfaces et implémentations
des méthodes CRUD (Create, Retreive, Update et Delete).
Elle offre plusieurs services :
• centralisation des l’accès aux données
• simplification de l’accès aux données
• abstraction du support de stockage
• mapping objet/relationnel: utiliser les données de la
base via des objets Java et inversement.
11
Comment implémenter la couche
DAO?
1) Créer le schéma relationnel (les tables) de la base
de données:
 Soit directement à partir d’un diagramme de
classes UML.
 Soit à partir de la traduction en Java (des classes
Java annotées par JPA) du diagramme de classes
UML.
2) Créer pour chaque classe persistante ou entité
(une classe qui est associée à une table) une
interface DAO et une classe qui l’implémente.
12
DAO: Exemple
1) Entité:
package entites;
public class Produit {
private Long id;
}
2) Interface DAO:
package dao;
public interface IProduitDao {
void ajouterProduit(Produit p);
List<Produit> getAllProduits();
void supprimerProduit(Long id);
}
3) Implémentation de l’interface DAO:
package dao;
public class ProduitDao implements IProduitDao{
}
13
Couche métier
Elle est responsable de la logique métier de
l'application, c'est-à-dire de l'implémentation
des règles de gestion fonctionnelles. Elle est
appelée aussi couche service.
 Elle communique avec la couche DAO.
 Cette couche ne doit avoir aucune
connaissance sur la manière dont les données
sont stockées (base de données, fichier, XML,
en mémoire….).
14
Couche métier
La couche métier n'a connaissance que des
interfaces décrivant les objets de la couche DAO.
Ainsi, peu importe le système de stockage final
utilisé, du point de vue du code métier les
méthodes à appeler ne changent pas, elles
seront toujours celles décrites dans l'interface.
C'est uniquement l'implémentation qui sera
spécifique au mode de stockage.
15
Couche de présentation web
(Interface Utilisateur)
Elle permet à un l'utilisateur d’interagir avec l’application.
Elle est basée sur les servlets et JSP en respectant le
modèle MVC (Model/View/Controller).
Il n’y a pas de règles de gestion dans la partie MVC. Ce
sont les contrôleurs qui doivent déléguer à la couche
métier tout traitement métier.
16
Rôle du Modèle (M)
Le modèle est utilisé par le contrôleur pour
préparer les données à la vue pour qu’elle se
mette à jour.
• Un modèle permet de stocker des données
partagées par le contrôleur et la vue.
• Typiquement le modèle contient les données
d’une requête et le résultat d’un traitement
effectué par la couche métier.
17
Modèle (M)
Un modèle est implémentée par un Java Bean
c.-à-d. une classe java avec:
• Des attributs qui permettent de stocker les
données envoyées par un client et le résultat
du traitement effectué par la couche métier.
• Un constructeur par défaut.
• Des getters et setters pour tous les attributs .
18
Modèle: Exemple 1
On souhaite que notre application permet d’afficher les
étudiants par ville:
• Le client envoie une ville
• La couche métier retourne une liste des étudiants de cette
ville
Alors le modèle peut être représentée par la classe suivante:
class Modele{
private String ville;
private List<Etudiants> listeEtudiants;
//Un constructeur par défaut
//gettes et setters
}
19
Modèle: Exemple 2
Dans une application JEE, on peut utiliser les
objets HttpServletRequest request et
HttpSession session comme des modèles.
session.setAttribute("ville" , ville);
session.setAttribute("listeEtudiants" , listeEtudiants);
20
Rôle du la Vue (V)
Une vue est implémentée par les pages JSP.
Elle fait l'interface avec l'utilisateur. Sa première
tâche est d'afficher les données qu'elle a
récupérées auprès du modèle. Sa seconde tâche
est de recevoir tous les actions de l'utilisateur
(bouton submit, clic sur un lien,…..). Ses
différents événements sont envoyés au
contrôleur.
21
Rôle du Contrôleur (C)
Représenté par une servlet dont le rôle est de :
1) recevoir la requête envoyée par un client
2) récupérer les données de cette requête
3) instancier ou récupérer le modèle (la session courante
par exemple)
4) stocker les données de la requête dans le modèle
5) faire appel à la couche métier pour faire les traitements
6) stocker les résultats du traitement dans le modèle
7) faire un forward (une redirection) vers la vue JSP
22
MVC 1 –MVC 2
MVC 1: quand on a plusieurs contrôleurs
(servlets) dans l'application qui interceptent les
requêtes provenant des utilisateurs.
MVC 2: quand on a un seul contrôleur (servlet)
dans l'application qui interceptent toutes les
requêtes provenant des utilisateurs. On l’appelle
souvent le contrôleur frontal.
23
Comment structurer un projet Eclipse en
une architecture N-tiers ?
Chaque couche sera matérialisée par un package
Java:
24
une couche = un package
Questions ?
25

Contenu connexe

PDF
Support JEE Servlet Jsp MVC M.Youssfi
PPTX
Modele mvc
PDF
Cours design pattern m youssfi partie 1 introduction et pattern strategy
PDF
Support de cours angular
PDF
Support programmation orientée objet c# .net version f8
PPTX
Spring ioc
PPTX
Introduction aux architectures des SI
PDF
Support de cours technologie et application m.youssfi
Support JEE Servlet Jsp MVC M.Youssfi
Modele mvc
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Support de cours angular
Support programmation orientée objet c# .net version f8
Spring ioc
Introduction aux architectures des SI
Support de cours technologie et application m.youssfi

Tendances (20)

PDF
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
PDF
Concevoir, développer et sécuriser des micro-services avec Spring Boot
PDF
Cours design pattern m youssfi partie 2 observer
PDF
Support developpement applications mobiles avec ionic v3 et v4
PDF
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
PPTX
DART.pptx
PDF
Support JEE Spring Inversion de Controle IOC et Spring MVC
PDF
Cours design pattern m youssfi partie 3 decorateur
PDF
Support de cours Spring M.youssfi
PDF
Sécurité des Applications Web avec Json Web Token (JWT)
PDF
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
PDF
Mise en oeuvre des framework de machines et deep learning v1
PPTX
Chp1 - Introduction aux méthodologies de Conception
PDF
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
PPSX
diagramme des cas d'utilisation
PDF
Support NodeJS avec TypeScript Express MongoDB
PPSX
Les architectures client serveur
PDF
Support programmation orientée aspect mohamed youssfi (aop)
PDF
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Cours design pattern m youssfi partie 2 observer
Support developpement applications mobiles avec ionic v3 et v4
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
DART.pptx
Support JEE Spring Inversion de Controle IOC et Spring MVC
Cours design pattern m youssfi partie 3 decorateur
Support de cours Spring M.youssfi
Sécurité des Applications Web avec Json Web Token (JWT)
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Mise en oeuvre des framework de machines et deep learning v1
Chp1 - Introduction aux méthodologies de Conception
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
diagramme des cas d'utilisation
Support NodeJS avec TypeScript Express MongoDB
Les architectures client serveur
Support programmation orientée aspect mohamed youssfi (aop)
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Publicité

Similaire à Marzouk architecture encouches-jee-mvc (20)

PDF
PDF
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
PDF
Architecture jee principe de inversion de controle et injection des dependances
PDF
Support de cours entrepise java beans ejb m.youssfi
PDF
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
PDF
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
PPTX
Architectures n-tiers
PDF
Connexion jdbc
PPTX
Présentation PFE Module Article GPAO
PDF
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
PDF
Architecture réparties et les services web
PDF
Cours architecture
PDF
cours-gratuit.com--id-1964.pdf
PDF
Les vrais enjeux de l'IA.pdf
PPTX
Esiea - 5A - Archi 1/3
PPT
Introduction au Domain Driven Design
PPTX
Java Server Faces (JSF)
PDF
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
PDF
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
PDF
architectureNTiers.pdf
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Architecture jee principe de inversion de controle et injection des dependances
Support de cours entrepise java beans ejb m.youssfi
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Architectures n-tiers
Connexion jdbc
Présentation PFE Module Article GPAO
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Architecture réparties et les services web
Cours architecture
cours-gratuit.com--id-1964.pdf
Les vrais enjeux de l'IA.pdf
Esiea - 5A - Archi 1/3
Introduction au Domain Driven Design
Java Server Faces (JSF)
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
architectureNTiers.pdf
Publicité

Dernier (16)

PDF
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
PPTX
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
PDF
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
PPTX
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
PDF
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
PPTX
FormationFormation e pFormationour HC .pptx
PPTX
Introduction aux Systèmes temps réel.pptx
PPTX
Logique séquentielle : les fondamentaux
PPTX
A Recurrent Neural Network (RNN)s a type of artificial neural network
PDF
TP de La Masse Volumique apparente et absolue
PPTX
UMAPON Cours de traitement des minerais 2.pptx
PDF
Visite de chantier – Projet de Polyclinique à Laghouat
PPTX
mon_expose_de_geophysique_disposotif_de_wener.pptx
PPTX
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
PDF
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
PDF
TP L’analyse granulométrique par tamisage
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
FormationFormation e pFormationour HC .pptx
Introduction aux Systèmes temps réel.pptx
Logique séquentielle : les fondamentaux
A Recurrent Neural Network (RNN)s a type of artificial neural network
TP de La Masse Volumique apparente et absolue
UMAPON Cours de traitement des minerais 2.pptx
Visite de chantier – Projet de Polyclinique à Laghouat
mon_expose_de_geophysique_disposotif_de_wener.pptx
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
TP L’analyse granulométrique par tamisage

Marzouk architecture encouches-jee-mvc

  • 1. Architecture en couches (N-Tiers) Modèle MVC Pr Abderrahim Marzouk Département de Mathématiques et Informatique Master RSI 2019-2020 1
  • 2. Introduction Si nous codons une application en mélangeant le code responsable des traitements métier au code responsable du stockage des données. Alors, il devient impossible d'exécuter séparément l'un ou l'autre. Et ceci peut avoir des inconvénients pour plusieurs raisons : 2
  • 3. Introduction • Il est impossible par exemple de changer de mode de stockage. Que ce soit vers un autre SGBD, ou vers un autre système, cela impliquerait une réécriture complète de toute l’application, car le code métier est mélangé et dépendant du code assurant le stockage. • impossible de tester le code métier de l'application sans faire intervenir le stockage (BD, etc.) • impossible de ne tester que le code relatif au stockage des données, obligation de lancer le code métier. 3
  • 4. Introduction Un code mélangé est bien plus difficile à maintenir et à faire évoluer qu'un code proprement découpé et organisé. 4 Application (Code mélangé) Découpage Couche 1 Couche 2 Couche n Une couche ?
  • 5. Couche logicielle Une couche logicielle d’une application permet de séparer ou isoler une partie de son code qui a une responsabilité unique ou une tâche précise et bien définie comme: • L’accès aux données • Les traitements métier appliqués aux données • L’interaction avec les utilisateurs Une couche peut évoluer sans impacter ou peu les autres couches (couplage faible ente les couches) 5
  • 6. Une architecture en couches ou N-tiers IHM Une architecture en couches ou N-tiers est une façon de développer ou organiser les applications en plusieurs couches logicielles empilées les unes sur les autres. 6 Couche Présentation Couche Service Couche d’Accès aux Données BD
  • 7. Communication entre couches Chaque couche ne communique qu’avec la couche immédiatement en dessous d'elle et n'a aucune connaissance des couches supérieures. 7 Couche i Couche i+1 Couche i+2
  • 8. Valeur ajoutée des architectures en couches La séparation par couches de responsabilités sert à découpler au maximum une couche de l'autre afin d'éviter l'impact d'évolutions futures de l'application. Par exemple: si l’on est amené à devoir changer de base de données , seule la couche d'accès aux données sera impactée, la couche de service et la couche de présentation ne seront pas concernées car elles auront été découplées des autres. 8
  • 10. Les différentes couches d’une architecture 3-tiers • Couche d’accès aux données • Couche métier • Couche présentation 10
  • 11. Couche d’accès aux données DAO (Data Access Object) La couche DAO va communiquer avec le système de stockage et va contenir les interfaces et implémentations des méthodes CRUD (Create, Retreive, Update et Delete). Elle offre plusieurs services : • centralisation des l’accès aux données • simplification de l’accès aux données • abstraction du support de stockage • mapping objet/relationnel: utiliser les données de la base via des objets Java et inversement. 11
  • 12. Comment implémenter la couche DAO? 1) Créer le schéma relationnel (les tables) de la base de données:  Soit directement à partir d’un diagramme de classes UML.  Soit à partir de la traduction en Java (des classes Java annotées par JPA) du diagramme de classes UML. 2) Créer pour chaque classe persistante ou entité (une classe qui est associée à une table) une interface DAO et une classe qui l’implémente. 12
  • 13. DAO: Exemple 1) Entité: package entites; public class Produit { private Long id; } 2) Interface DAO: package dao; public interface IProduitDao { void ajouterProduit(Produit p); List<Produit> getAllProduits(); void supprimerProduit(Long id); } 3) Implémentation de l’interface DAO: package dao; public class ProduitDao implements IProduitDao{ } 13
  • 14. Couche métier Elle est responsable de la logique métier de l'application, c'est-à-dire de l'implémentation des règles de gestion fonctionnelles. Elle est appelée aussi couche service.  Elle communique avec la couche DAO.  Cette couche ne doit avoir aucune connaissance sur la manière dont les données sont stockées (base de données, fichier, XML, en mémoire….). 14
  • 15. Couche métier La couche métier n'a connaissance que des interfaces décrivant les objets de la couche DAO. Ainsi, peu importe le système de stockage final utilisé, du point de vue du code métier les méthodes à appeler ne changent pas, elles seront toujours celles décrites dans l'interface. C'est uniquement l'implémentation qui sera spécifique au mode de stockage. 15
  • 16. Couche de présentation web (Interface Utilisateur) Elle permet à un l'utilisateur d’interagir avec l’application. Elle est basée sur les servlets et JSP en respectant le modèle MVC (Model/View/Controller). Il n’y a pas de règles de gestion dans la partie MVC. Ce sont les contrôleurs qui doivent déléguer à la couche métier tout traitement métier. 16
  • 17. Rôle du Modèle (M) Le modèle est utilisé par le contrôleur pour préparer les données à la vue pour qu’elle se mette à jour. • Un modèle permet de stocker des données partagées par le contrôleur et la vue. • Typiquement le modèle contient les données d’une requête et le résultat d’un traitement effectué par la couche métier. 17
  • 18. Modèle (M) Un modèle est implémentée par un Java Bean c.-à-d. une classe java avec: • Des attributs qui permettent de stocker les données envoyées par un client et le résultat du traitement effectué par la couche métier. • Un constructeur par défaut. • Des getters et setters pour tous les attributs . 18
  • 19. Modèle: Exemple 1 On souhaite que notre application permet d’afficher les étudiants par ville: • Le client envoie une ville • La couche métier retourne une liste des étudiants de cette ville Alors le modèle peut être représentée par la classe suivante: class Modele{ private String ville; private List<Etudiants> listeEtudiants; //Un constructeur par défaut //gettes et setters } 19
  • 20. Modèle: Exemple 2 Dans une application JEE, on peut utiliser les objets HttpServletRequest request et HttpSession session comme des modèles. session.setAttribute("ville" , ville); session.setAttribute("listeEtudiants" , listeEtudiants); 20
  • 21. Rôle du la Vue (V) Une vue est implémentée par les pages JSP. Elle fait l'interface avec l'utilisateur. Sa première tâche est d'afficher les données qu'elle a récupérées auprès du modèle. Sa seconde tâche est de recevoir tous les actions de l'utilisateur (bouton submit, clic sur un lien,…..). Ses différents événements sont envoyés au contrôleur. 21
  • 22. Rôle du Contrôleur (C) Représenté par une servlet dont le rôle est de : 1) recevoir la requête envoyée par un client 2) récupérer les données de cette requête 3) instancier ou récupérer le modèle (la session courante par exemple) 4) stocker les données de la requête dans le modèle 5) faire appel à la couche métier pour faire les traitements 6) stocker les résultats du traitement dans le modèle 7) faire un forward (une redirection) vers la vue JSP 22
  • 23. MVC 1 –MVC 2 MVC 1: quand on a plusieurs contrôleurs (servlets) dans l'application qui interceptent les requêtes provenant des utilisateurs. MVC 2: quand on a un seul contrôleur (servlet) dans l'application qui interceptent toutes les requêtes provenant des utilisateurs. On l’appelle souvent le contrôleur frontal. 23
  • 24. Comment structurer un projet Eclipse en une architecture N-tiers ? Chaque couche sera matérialisée par un package Java: 24 une couche = un package