Comparatif de frameworks FrontController (Cairngorm vs PureMVC vs LowRA)
Je vous propose un comparatif non exhaustif de 3 frameworks utilisant le principe du MVC+C. Une présentation rapide est une mise en avant de leurs point forts et faiblesses sera proposé. Il y a beaucoup d'autres frameworks proposant ce pattern, mais j'ai sélectionné ce qui me semblait les plus aboutis et les plus connus. Et que j'ai eu le temps d'utiliser un minimum...
Cairngorm
Présentation
Cairngorm est un Framework dédié à Flex et qui propose une implémentation du principe du FrontController.
Il propose aussi une gestion des échanges serveurs à travers plusieurs principes :
Le Business Delegate qui est une classe proxy gérant toute la logique de communication directe avec le serveur (web service, http ou autres). Elle est appelé par les commandes, qui leur passe deux méthodes : onResult, onFault recevant les résultats.
Les Value Object qui sont des objets de retour du serveur Remoting. Ils sont automatiquement mappés par Flex à nos propres classes. Pour cela les classes doivent indiqués le type AMF correspondant.
Le Service Locator qui permet de centraliser l’accès aux différents service (Web Service, http, XML) avec une interface unifiée.
Points forts :
- Framework léger (à peine une vingtaines de classes)
- Soutenu, documenté et géré par Adobe de manière officielle
- Répandu dans la communauté Flex donc assez universel
Points faibles :
- Totallement dépendant du Flex SDK, ne peut donc pas s'utiliser dans des projets Flash ou pur ActionScript
- La mise à jour des vues dans le cadre d'une mise à jour des modèles se fait par data binding, ce qui peut poser des problèmes de lisibilité du code et de debugging. (Ex. Si une propriété du modèle n'existe plus, on n'aura pas de notification d'erreur)
Liens
- http://labs.adobe.com/wiki/index.php/Cairngorm
- http://www.cairngormdocs.org
- http://www.cairngormdocs.org/tools/CairngormDiagramExplorer.swf
- http://www.cairngormdocs.org/docs/cairngorm_2_1/index.html
LowRA
Présentation
LowRA est la version AS3 des Framework PixLib et PixIOC.
Il propose notamment une implémentation du principe du FrontController. Mais aussi beaucoup d’autres choses.
Entre autres :
Un Service Locator qui permet de centraliser l’accès aux différents service du côté serveur.
Un paquetage de Tween.
Des paquetages de Collections et d’Iterator.
Une gestion unifiés des Loading (Graphique, son, XML, etc…) et la possibilité de créé des piles de chargement.
Une possibilité d’avoir des Commandes déclenchés à intervalles réguliers.
Une gestion d’événements typés et un eventBroadcaster propre au Framework.
Les deux autres grosses parties du Framework concernent l’IOC et par extension la possibilité de créé une application par plugin.
Points forts :
- Non basé sur le Flex SDK
- Propose beaucoup plus que simplement une implémantation du MVC+C
- Propose une implémentation d'IOC et une architecture de plug-in toute faite
- Open source et possibilité d'évolution
Points faibles :
- Pas de version stable (pour l'instant)
- Certains éléments non développés à l'heure actuelle
- Documentation manquante
Liens
- http://osflash.org/projects/lowra
- http://www.geturl.net/lowra/
- http://groups.google.com/group/lowra//a>
- http://www.community.oddlyonward.com/
PureMVC
Présentation
PureMVC propose lui aussi une implémentation du pattenr MVC+C en se reposant aussi sur pas mal d'autres patterns (Proxy, Observer, Facade, Mediator)
Dans PureMVC, View et Model sont deux classes qui ne font que donner des accés a des listes d'instances (de Mediator pour View et de Proxy pour Model) et elles sont elle mêmes gérées par la facade qui est le point central de l'application.
Points forts
- Non basé sur le Flex SDK
- Implémentation rapide sans héritage (on utilise directement les classes du framework)
- Bonne documentation et site actif derrière
- Bonne réputation
Points faibles
- Système événementiel différents des habitudes
- Pas de Notification typées
- Nomenclature des classes différentes donc un peu plus longe à appréhender
- Certains points (Mediator) peuvent nécessiter un redéveloppement (cf mon post précédent)
Liens
Et pour ne pas rester en reste il y aussi ceux là :
Au final et pour ne pas éluder la question, je dirais qu'on peut conseiller Cairngorm dans le cadre de projet Flex pas trop gros et passer à PureMVC ou LowRA si vraiment le projet grossit trop. J'ai fait la manipulation sur un mini projet, la transition se fait assez facilement. Au final, le passage en PureMVC est quand même un peu plus long du fait de la nomenclature radicalement différentes des classes. Donc Cairngorm est une bonne introduction aussi pour ceux qui ne sont pas super à l'aise avec le pattern MVC+C. C'est un framerwork qui va à l'essentiel et qui est ultra bien documenté. Par contre dans le cadre d'un projet ActionScript hors Flex je recommande LowRA sans hésiter tant il apporte tout un tas de faciliter (loaders, event typés, request, collections) sans parle de l'IOC et des plugins. Même si PureMVC, n'est pas absolument lié à Flex, il semble logique de l'adatper pour les gros projets Flex. On pourra toujours extraire certaines classes de LowRA pour des besoins particuliers.
Sur ce, bon dev et bon week-end ![]()
Merci pour cet article, vraiment interessant.
J’ai eu l’occasion d’utilisé Cairngorm (ou plutôt AIR Cairngorm), et c’est vrai qu’il est très facile de le prendre en main. La doc me parait pas si présente que ça par contre et les exemples sont beaucoup trop simples et dès qu’on a affaire à quelque chose de plus compliqué, on sait pas trop vers où se tourner.
Un autre point fort (et même très très fort) de PureMVC est qu’il est utilisable dans des projets Flash purs et dans avec AS2, C#, Java, PHP, et ColdFusion.
Voir ce post : puremvc.org/content/view/…
Tout à fait Laurent ( comme d’ailleur LowRA).
J’ai un peu approfondi mon utilisation des 3, et je me retrouve à faire un mix entre chacun au final.
Ton captcha a l’air de bien fonctionner. Le mien refuse d’afficher les images, et il laisse passer les messages même si la réponse est fausse. Si on ne répond pas, il ne laisse pas partir le commentaire (donc il marche un peu quand même). Il laisse aussi passer les commentaires de certains robots Tu as modifié quelque chose avant de l’installer ? C’est aussi un thème alto, il est super beau ce thème.
Merci.
Et concernant, le framework vegas, vous en pensez quoi ? au niveau IOC, externalisation des ressources graphiques ? Possibilité de coder en pure AS3 (sans flex) ?
Mm pas essayé… J’ai la chance d’être dans un boîte qui a son propre framework donc je n’ai pas encore eu l’occasion de m’y intéresser. Ma première impression est que ça ressemble beaucoup à lowra, mais après je n’en sais pas plus…
Bonjour, je m’introduis dans cette discussion pour vous présenter deux outils freeware que j’ai mis au point afin d’aider les développeurs de Cairngorm ET de PureMVC (j’ai personnellement utilisé les deux)
CairngormConsole:
PureMVC Console:
Ce sont des outils de debuggage qui permettent de suivre en temps réel ce qui se passe dans les frameworks, et d’inspecter le contenu de leurs différents éléments.
Vous pourrez les trouver en téléchargement gratuit sur le site du KapLab:
* CairngormConsole
* PureMVC Console
* KapLab
En espérant que cela vous sera utile