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

Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieMohammed Amine Mostefai
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiENSET, Université Hassan II Casablanca
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...ENSET, Université Hassan II Casablanca
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesLilia Sfaxi
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Heithem Abbes
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesENSET, Université Hassan II Casablanca
 
Presentation pfe Système de gestion des rendez-vous médicaux
Presentation pfe Système de gestion des rendez-vous médicauxPresentation pfe Système de gestion des rendez-vous médicaux
Presentation pfe Système de gestion des rendez-vous médicauxFehmi Arbi
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
Introduction aux systèmes répartis
Introduction aux systèmes répartisIntroduction aux systèmes répartis
Introduction aux systèmes répartisHeithem Abbes
 

Tendances (20)

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 Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vie
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
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)
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
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
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Presentation pfe Système de gestion des rendez-vous médicaux
Presentation pfe Système de gestion des rendez-vous médicauxPresentation pfe Système de gestion des rendez-vous médicaux
Presentation pfe Système de gestion des rendez-vous médicaux
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Introduction aux systèmes répartis
Introduction aux systèmes répartisIntroduction aux systèmes répartis
Introduction aux systèmes répartis
 

Similaire à Marzouk architecture encouches-jee-mvc

Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
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)

Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
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
 

Dernier

Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...
Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...
Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...idelewebmestre
 
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...idelewebmestre
 
Compersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileCompersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileMBouderbala
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfalainfahed961
 
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresBOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresidelewebmestre
 
BOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud PorcsBOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud Porcsidelewebmestre
 
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresBOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresidelewebmestre
 
BOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chairBOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chairidelewebmestre
 
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLBOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLidelewebmestre
 
La logistique a L'ère de l'industrie 4.0
La logistique a L'ère de l'industrie 4.0La logistique a L'ère de l'industrie 4.0
La logistique a L'ère de l'industrie 4.0ourssoula
 
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...idelewebmestre
 
Cadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en FranceCadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en Franceidelewebmestre
 
BOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein airBOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein airidelewebmestre
 
Agrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en DordogneAgrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en Dordogneidelewebmestre
 
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsBOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsidelewebmestre
 
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineBOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineidelewebmestre
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresidelewebmestre
 
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleurBOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleuridelewebmestre
 
BOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinBOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinidelewebmestre
 
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
 

Dernier (20)

Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...
Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...
Accompagnement de l'agrivoltaisme - Focus sur l'étude système en Merthe et Mo...
 
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
 
Compersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileCompersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huile
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
 
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresBOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
 
BOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud PorcsBOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud Porcs
 
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresBOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
 
BOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chairBOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chair
 
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLBOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
 
La logistique a L'ère de l'industrie 4.0
La logistique a L'ère de l'industrie 4.0La logistique a L'ère de l'industrie 4.0
La logistique a L'ère de l'industrie 4.0
 
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
 
Cadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en FranceCadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en France
 
BOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein airBOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein air
 
Agrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en DordogneAgrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en Dordogne
 
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsBOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
 
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineBOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitières
 
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleurBOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
 
BOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinBOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcin
 
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...
 

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