Architecture J2EE Web Jean-Jacques LE COZ
J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail JAF RMI-IIOP
Architecture complète J2EE un exemple basé sur une solution logiciels libres
Architecture Web trois niveaux sources de données SGBDR Serveur d'applications client navigateur Autres applications Internet 12 3 N
Modèle Web Modèle client-serveur basé sur HTTP Milieu des années 90 Communication entre client et serveur Basée sur un mécanisme requête-réponse Ressemble aux anciennes applications avec terminaux Côté client Interface standard (navigateur) Déploiement simplifié
Modèle Requête/Réponse Application Web Navigateur Requête/ réponse Requête/ réponse Requête/ réponse
Modèles Stateless/Stateful
Modèle Stateless Modèle sans état Calqué sur le protocole HTTP Intérêt Pas de gestion de service par utilisateur Supporte de fortes montées en charge Désavantages Gestion de l'état à la charge du programmeur Gestion de sessions Cookies, champs cachés, variables URL Pas de retour en arrière
Programmation des sessions Processus 1.Obtenir du client l'identifiant de l'utilisateur 2.Restaurer l'état de la conversation à partir de la session 3.Exécuter la requête 4.Construire la réponse 5.Mémoriser l'état de la conversation dans la session 6.Envoyer la réponse
Modèle “Stateful ” Nouveau modèle avec état C'est un modèle de programmation Le protocole reste HTTP (sans état) Concept de continuation L'état de l'application est chargé avant une requête L'état de l'application est sauvé après chaque requête
Intérêts du modèle Stateful Il assure le sans état mais masqué par le framework Il fournit au programmeur un modèle avec état Le framework peut restaurer n'importe quelle continuation n'importe quand
Modèle stateful Web application Utilisateur débutfin Requête
Modèle MVC
Histoire du modèle MVC (1) Conception en 1973 Dr. Trygve Reenskaug (Oslo – Norvège) Non orienté objet Revu en 1978 Xerox (Palo Alto – centre de recherche) Adapté à l'orienté objet
Histoire du modèle MVC (2) Implémentation en 1980 Comme pattern dans le langage SmallTalk Xerox Adaptation au framework Servlet MVC2 ou MVC modèle 2
Modèle MVC Modèle Représenté par les couches métier de l'application Vue Représenté par les couches IHM de l'application Contrôleur Représenté par les couches qui gérent la logique applicative
Mécanisme MVC Modèle - Encapsule l'état de l'application - Notifie les vues des changements d'état Contrôleur - Définit le comportement de l'application - Met en correspondance les actions de l'utilisateur avec la mise à jour du modèle - Sélectionne les vues pour les réponses Vue - Présente l'état du modèle - Réalise des requêtes de mise-à-jour sur le modèle - Prévient le contrôleur des événements provenant de l'utilisateur événement invocation de méthode invocation de méthode invocation de méthode
Design Pattern sous-jacent Design pattern Observateur Logique événementielle Mécanisme de notification des événements
Le modèle MVC2
Modèle adapté à J2EE Web Contrôleur Composant Servlet Vue Composants JSP Modèle Classes POJO et/ou JavaBean
Design Pattern Commande MVC2 repose sur le pattern Commande
Design Pattern Fabrique MVC2 repose sur le pattern Fabrique
MVC2 vue modèle contrôleur pattern commande
Frameworks
Qu'est-ce qu'un framework ? Un ensemble de librairies Propose une API de programmation Plusieurs paradigmes possibles É vénementiel, Orienté Objet, Aspect Propose une vision Architecture, méthode Permet de développer plus rapidement et plus proprement Peut proposer un outillage
Frameworks orientés GUI Echo NextApp JSF (Java Server Faces) Projet SUN MICROSYSTEM Spring MVC Communauté spring Struts Consortium Apache
Frameworks de persistance Hibernate Communauté hibernate iBatis Consortium Apache Cayenne Communauté cayenne Jpox Communauté JPox
Frameworks micro-noyau Spring Inversion de conrôle IOC Inversion des dépendances AOP Aspect Oriented Programming Connecteurs EJB Intergiciels de persistance (JDO, Hibernate) JSF Ajax ?
Technologie AJAX
AJAX : c'est quoi ? Asynchronous JavaScript and XML Technologie côté client Permet d'éviter le rechargement des pages De créer des applications plus riches et plus dynamiques Combine XML et JavaScript Une alternative aux clients riches Plus un pattern qu'une technologie
Mécanisme Ajax côté client Repose sur un objet XMLHttpRequest Capable d'envoyer une requête asynchrone POST ou GET au serveur SOAP au serveur Doit enregistrer une méthode CallBack pour traiter la réponse du serveur Capable de parser la réponse XML avec DOM La page du navigateur est modifiée par les données issues de la réponse XML
Mécanisme Ajax côté serveur Parsing de la requête Traitement de la requête Servlet Service Web Sérialization XML de la réponse Envoie de la réponse au client
Pattern Ajax Client Serveur HTTP Navigateur javaScript service Web ou servlet requête asynchrone réponse XML rafraîchissement de la page
Cycle de vie Ajax avec servlet
Ajax : problèmes (1) Tous les navigateurs ne supportent pas XMLHttpRequest La configuration du navigateur ne permet pas le support de XMLHttpRequest L'utilisateur non habitué peut ne pas se rendre compte du rafraîchissement
Ajax : problèmes (2) Attention à l'augmentation de la charge de travail du serveur Les requêtes sont asynchrones, il n'y a aucune garantie de retour Augmentation du trafic réseau
Frameworks AJAX OpenLaszlo Laszlo Systems Inc Orientation client riche Indépendant de l'application web ASP, Java, PHP JSF avec certains UI components Oracle ADF Faces
Conclusion Les applications Web ont plein d'avenir Facilité de déploiement Gestion centralisée Sécurité Très grande variété de clients Les applications Web et les entreprises Avec les technologies client riche Très adaptées aux applications de gestion