SlideShare une entreprise Scribd logo
1  sur  25
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

Tendances

Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursLilia Sfaxi
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...ENSET, Université Hassan II Casablanca
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classeAmir Souissi
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREGhizlane ALOZADE
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriMansouri Khalifa
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
 

Tendances (20)

Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Gestion comptes bancaires Spring boot
Gestion comptes bancaires Spring bootGestion comptes bancaires Spring boot
Gestion comptes bancaires Spring boot
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classe
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Cours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxyCours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxy
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIRE
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Polymorphisme (cours, résumé)
Polymorphisme (cours, résumé)Polymorphisme (cours, résumé)
Polymorphisme (cours, résumé)
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
Modele mvc
Modele mvcModele mvc
Modele mvc
 

Similaire à Marzouk architecture encouches-jee-mvc

cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfRachida19
 
MVVM de A à Z
MVVM de A à ZMVVM de A à Z
MVVM de A à ZMicrosoft
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2RomainKuzniak
 
Sql azure performance et montee en charge (1)
Sql azure   performance et montee en charge (1)Sql azure   performance et montee en charge (1)
Sql azure performance et montee en charge (1)Aymeric Weinbach
 
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhvSOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhvamine17157
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfBabacarDIOP48
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1ATHMAN HAJ-HAMOU
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Eric Bourdet
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)Eric Bourdet
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvcMadridal
 
10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciel10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciellauraty3204
 

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

cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
 
2 ModéLe Mvc
2 ModéLe Mvc2 ModéLe Mvc
2 ModéLe Mvc
 
Architecture .net
Architecture  .netArchitecture  .net
Architecture .net
 
Mysql
MysqlMysql
Mysql
 
MVVM de A à Z
MVVM de A à ZMVVM de A à Z
MVVM de A à Z
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Sql azure performance et montee en charge (1)
Sql azure   performance et montee en charge (1)Sql azure   performance et montee en charge (1)
Sql azure performance et montee en charge (1)
 
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhvSOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdf
 
Cours architecture
Cours architectureCours architecture
Cours architecture
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
 
Bases dedonnees.net
Bases dedonnees.netBases dedonnees.net
Bases dedonnees.net
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
Java Server Faces 2
Java Server Faces 2Java Server Faces 2
Java Server Faces 2
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvc
 
10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciel10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciel
 
J2 ee
J2 eeJ2 ee
J2 ee
 

Dernier

Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 

Dernier (11)

Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 

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