Evolutions technologiques. Nouvelles orientations pour le développement.
-
Upload
mathieu-fleury -
Category
Documents
-
view
104 -
download
0
Transcript of Evolutions technologiques. Nouvelles orientations pour le développement.
Evolutions technologiques.Nouvelles orientations pour le
développement.
23/06/2006 Mathieu Larchet 2
Plan Portlets
La norme JSR-168Qu'est-ce qu'une Portlet ?uPortal et les Portlets
Pluto : l'implémentation de référence Communication Portail / Portlet Cycle de vie d'une Portlet Impacts sur le développement Avantages et inconvénients
23/06/2006 Mathieu Larchet 3
Plan Spring
Notion de conteneur léger Injection de dépendance – Hollywood Principle Modules Spring Développement en couches
Bilan
Les Portlets
23/06/2006 Mathieu Larchet 5
Qu'est-ce qu'une Portlet ? Une portlet est une application web embarquée dans
un portail
Par extension, une portlet est une application web respectant la norme JSR-168
23/06/2006 Mathieu Larchet 6
uPortal et les Portlets
uPortal
v2.x.x
Canaux uPortal
PortletsAdaptateur
uPortal
v3.x.x
Portlets
Canaux uPortalAdaptateur
23/06/2006 Mathieu Larchet 7
Pluto Pluto est l'implémentation de référence de la norme
JSR-168 Il peut être utilisé de plusieurs façons :
Embarqué dans un portail sous la forme d'une librairie
En mode autonome afin de procéder à des tests
Très léger L'API Portlet est très similaire à l'API Servlet
23/06/2006 Mathieu Larchet 8
Tomcat
uPortal
Communication Portail / Portlet Modèle de fonctionnement logique
Portlet Portlet
PortletPortlet
23/06/2006 Mathieu Larchet 9
Communication Portail / Portlet Modèle de fonctionnement réel
Portlet
uPortal
Tomcat
Pluto
Pluto
23/06/2006 Mathieu Larchet 10
Cycle de vie d'une portlet
L'utilisateur clique sur une URL de type 'action'
La Portlet ciblée traite la requête
Une requête de type 'render' est envoyée à chacune des Portlets de la page qui rafraîchissent leur affichage
23/06/2006 Mathieu Larchet 11
Impacts sur le développement Choix du type d'URL pour chaque lien de notre
application Programmation 100% multi-thread
A l'opposé de la programmation d'un canal uPortal Réfléchir à tous les blocs critiques du code Synchronized n'est pas un remède miracle Il est impératif d'utiliser les objets de session
fournis par l'API pour stocker les informations propres à un utilisateur
Penser à utiliser les styles CSS pour les portlets (indépendance vis-à-vis du portail utilisé)
23/06/2006 Mathieu Larchet 12
Avantages & inconvénients Déploiement dans un contexte séparé
Pas de collision des librairies Mutualisation possible des ressources Rechargement du contexte indépendant de celui
du portail Le développeur peut utiliser les outils qu'il souhaite
pour le développement (indépendance)
Difficile de rester indépendant du portail et / ou du moteur (Pluto)
Pas de notion de 'servant' Quelques difficultés pour l'envoi / téléchargement de
fichiers
Spring
23/06/2006 Mathieu Larchet 14
Notion de conteneur léger A l'opposé de la philosophie J2EE :
Indépendance vis-à-vis de l'environnement (serveur d'application, Servlet, Portlet, application Swing etc.).
Tests unitaires très faciles à réaliser. Peu ou pas du tout de dépendance avec le
conteneur (au choix du développeur). Léger (un seul fichier JAR à ajouter au projet)
Nombreux modules optionnels permettant au développeur de se consacrer à ce que fait son application et non plus comment elle le fait.
23/06/2006 Mathieu Larchet 15
Injection de dépendance Principe d'Hollywood : Ne nous appelez pas, nous
vous appellerons.
Spring généralise le principe définit par le patron de conception 'Abstract Factory'.
Spring se charge de l'instanciation de tous les objets de l'application et de la résolution des dépendances entre eux.
23/06/2006 Mathieu Larchet 16
Injection de dépendance Approche classique :
Objet A
Objet CObjet B
Objet D Objet E
H I J MK L N O P Q R
Objet F Objet G
23/06/2006 Mathieu Larchet 17
Spring
Injection de dépendance Injection de dépendance :
Objet A
Objet CObjet B
H I J MK L N O P Q R
Objet D Objet E Objet F Objet G
23/06/2006 Mathieu Larchet 18
Modules Spring
Spring Core
Injection de dépendance
AOP
Spring
AspectJ DAO
Spring JDBC – LDAP
ORM
Ibatis – Hibernate – JDO
Context
JNDI – Remoting – EJB
Web
JSP – PDF – Excel
Tiles – Velocity
MVC
Spring
Struts
JSF
Tapestry
23/06/2006 Mathieu Larchet 19
Développement en couches Spring permet de structurer le développement d'une
application en couches (architecture 3 tiers) : Couche présentation (MVC, Swing etc.). Couche métier Couche d'accès aux données
Spring va permettre a chaque couche de s'abstraire de sa ou ses couches inférieures (injection de dépendance) : Le code de l'application est beaucoup plus lisible. Le maintient de l'application est facilité. Les tests unitaires sont simplifiés.
Bilan
23/06/2006 Mathieu Larchet 21
Bilan Portlets :
Il est important que tous les nouveaux développements soient envisagés sous forme de portlets.
Certains points sont à approfondir comme la communication inter-portlet, la notion de servant, et tout ce qui concerne les services offerts par uPortal.
Spring : Facilite et structure le développement. Permet la focalisation sur les aspects métier. S'intègre avec de nombreux outils externes.
23/06/2006 Mathieu Larchet 22
Bilan L'utilisation de technologies standard permet :
Une maintenance des applications facilitée Une plus grande communauté de support Un travail collaboratif plus efficace La reprise d'applications développées par d'autres
personnes
De nombreuses entreprises ont fait le choix de Spring et / ou des portlets (Cap Gemini, AMUE, Ministère des Finances etc.).