Design Pattern JEE

Post on 21-Jun-2015

521 views 0 download

description

Le support d'un Workshop qui présente les design pattern d'architecture JEE pour illustrer les différents éléments d'un Framework. Réalisé à l'aide de l'excellent "Head First Servlets & JSP"

Transcript of Design Pattern JEE

Design Pattern Java EE – L’essentiel By Yannick

• Sommaire Tour d’horizon de ce que l’on va aborder…

Design Pattern dans l’archi JEE Une vue d’ensemble des design de Sun

Les design pattern MVC Transfert Object

Business Delegate Intercepting Filter

Service Locator Front Controller

Petit test à chaud !! Ou comment voir si on a suivi ^^

Intro

DP

Quizz

•Achitecture n-tiers

La base… •MVC

Model • Représente les données de l'appli • Répond aux requêtes de la vue • Notifie la vue des changements

View • Représentation du modèle • Interface avec laquelle l'utilisateur interagit • Reçoit les actions de l'utilisateur

Controller • Gère l'interface entre le modèle et le client •Lie les actions utilisateurs à la mise à jour du modèle • Sélectionne la vue (réponse) • Un pour chaque fonctionnalité

Changement

d’état

Choix de la vue

Actions utilisateurs

Notifications de changement

Requête d’état

POJO

JSP

Servlet

Ou comment gérer le code dupliqué… •MVC, dans une appli web « Réelle »

Controller

Model

JSP

Controller Controller

Controller

JSP JSP

JSP

Model Model

Model

Détail compte

Identification

• Récupère les paramètres de la request

• Valide les paramètres

• Récupère le Modèle qui nous intéresse

• Place le Modèle dans la request

• Invoque la vue

In the real life ^^ •Front controller

Request

Front Controller

<xml> <validate> </validate> <mapping> </mapping> </xml>

JSP

Model

Config XML

Classes de validation

Classes d’ actions

FormBean

Action Object

Action Servlet

Struts-config.xml

•MVC Quand on est que sur une VM

Oui mais voilà, et quand le

modèle

n’est pas sur le

même serveur ???

JNDI

• Java Naming and Directory Interface

• Le but c’est de rajouter un élément à l’architecture pour centraliser la location des objets (un annuaire)

• Si on veut partager un objet on l’enregistre sur l’annuaire

• Si on en cherche un, on regarde dans l’annuaire

• Remote Method Invocation

• Le but est de récupérer un objet au travers du réseau

RMI

• Les outils du « remote » Ou les outils pour comprendre les pattern « remote »

• MVC avec Model « remote » Un premier jet

Oui mais voilà, des fois on est

« remote » Et des fois pas

•Le pattern Business Delegate Ou comment cacher la complexité du JNDI et RMI

• Réduit le couplage entre les couches présentation et Business • Encapsule la recherche dans l’annuaire • Proxy pour le client

Et cette fois il est où

le code dupliqué?

• Le Pattern Service Locator Ou comment éviter de dupliquer le code du « lookup »

• MVC avec Model « remote » Deuxième jet

Où est le problème ?

Ca c’est 1000 fois plus lent qu’un appel local !!

• Le pattern DTO (Data Transfert Object) Ou à quoi sert la sérialisation…

try {

TransfertObject o = serviceStub.serviceMethod(param);

} catch (RemoteException e) {

throw new ApplicativeException();

}

• Le Pattern Intercepting Filter Ou comment rajouter de l’information partout sans tout changer…

• Peut intercepter et/ou modifier la requête avant qu’elle arrive à la servlet • Peut intercepter et/ou modifier la réponse avant qu’elle soit retournée au client • Déclarée dans le web.xml • Les filtres peuvent être chaîné