Utilisation de PureMVC
La mise en œuvre d’une application RIA robuste, maintenable, réutilisable et évolutive nécessite l’utilisation des modèles de conceptions éprouvés. Notre application est réalisée en GWT basée sur une architecture multi-couche. Voici quelques unes des exigences auxquelles doit répondre notre application :
- Faible couplage entre les différentes couches,
- Chaque composant de l’application doit avoir un rôle clair et précis,
- Accès transparent à des services distants ou co-localisés,
- Une mise en cache des données utilisées fréquemment afin d’accroître les performances.
Afin de répondre à ces exigences, notre choix s’est porté sur le framework PureMVC. Ce framework met en œuvre le méta Pattern MVC. Il permet de découpler vues et modèles en instaurant entre eux un protocole d’échanges basé sur le pattern Observateur. Ce modèle de conception établit un type d’interaction Diffusion / Souscription.
Le framework PureMVC permet de séparer la couche Vue de notre application en trois tiers bien distincts : le modèle, la vue et le contrôleur. Ces trois tiers sont mis en œuvre par trois classes appelées Model, View et Controller. Elles constituent les acteurs centraux du framework. Ces acteurs collaborent entre eux par le biais d’une Façade.
La classe Façade détient les références des trois acteurs centraux. Chaque acteur est couplé avec des collaborateurs. La façade initialise les acteurs centraux et procède à une phase d’enregistrement des collaborateurs :
- Model — registerProxy (<IProxy>)
- Vue — registerMediator (<IMediator>)
- Controller — registerCommand(<notificationName>, <ICommand>)
Le modèle détient des références des classes Proxy. Chaque proxy communique avec des services distants et sert de cache des données fréquemment utilisées. La vue détient des références des classes Mediator. Un médiateur représente des composants visuels. Enfin le contrôleur détient des références des classes Command. Les commandes peuvent interagir directement avec des classes Proxy ou envoyer des notifications.
Voici un schéma qui illustre la manière dont sont orchestrés les échanges entre les différents acteurs du framework PureMVC :