Evolutions technologiques. Nouvelles orientations pour le développement

Preview:

Citation preview

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.).

Recommended