Cairngorm pour les fainéants… Tour d’horizons des code generator
parce que Cairngorm c’est bien, mais c’est un peu long des fois…
En fait, quand on utilise cairngorm dans un projet avec plusieurs commandes, et quelques écrans, ça devient vite le Bowdel, pour une commande, 2 voir 3 de fichiers à écrire, souvent les mêmes mais qui changent un peu, à 3 mots prêts… Donc au final, on gagne du temps parce qu’on utilise cairngorm et qu’on ré-invente pas la roue mais on en perds parce que c’est pas super pratique à utiliser… Je dirai que c’est le même combat pour des projets de Remoting, avec coté serveur, le développement des méthodes Création / Ajout / Suppression / Modification (CRUD) pour les objets (VO,DTO au choix) que l’on utilise dans notre appli…
C’est la que les outils de générations automatiques du codes interviennent, plus ou moins bien fichus, plus ou moins bien intrégrés.
Pour Cairngorm
Sous la forme d’une tache ANT, on peut, à partir d’un fichier properties, créer l’arborescence type de cairngorm, créer le ModelLocator, le Controller, le service Locator, des VO, et les sequences Event / commandes / Delegate, la totale quoi. Comme c’est une tache Ant, c’est parfaitement intégré à FlexBuilder / Eclipse. Ca prend 5min à configurer et ça fait gagner pas mal de temps. Pour ceux qui voudraient en apprendre un peu plus sur Ant, je vous invite à explorer les sources, ça fournis un bon exemple pratique.
C’est un outil de génération en ligne, qui fournit une interface graphique. Il permet d’aller assez loin en terme de personnalisation, on peut en plus de toute la base (Arborescence Cairngorm, ModelLocator, Controller, ….) créer des vues, et même les squelettes de classes qui seront dans un package Utility. Il fournit aussi un fichier de build pour compiler l’appli… il est même possible de visualiser les sources générées. Quand on a fini, on peut télécharger une archive qui contient tous nos fichiers.
FCG - Flex Cairngorm code generator (par Dehats)
FCG est une appli Air. La différence avec les précédents outils, c’est qu’il est “intelligent”. Il peut lire les sources / java / php de nos objets coté serveurs et il crée aussi les fichiers AS / Mxml qui vont bien, en plus des classes de bases de cairngorm. On a un outil bien complet et assez bien fait que j’ai malheureusement pas eu le temps de le tester, par contre, sur le site, on peut voir une démo en vidéo… ça donne envie, ca à l’air d’être un bon outils pour préparer son projet Cairngorm. (A quand un outils, qui par de l’UML … )
Pour info, il existe aussi un générateur en ruby sur googleCode… mais je fais pas ruby !
Coté serveur
La, rien a voir avec cairngorm, puisqu’on a que la partie objets serveur (+ connections à une BDD). Ici le point de départ, c’est la base de données. On crée des tables un peu comme avec phpMyAdmin. On choisi son langage coté serveur (pour l’instant JAVA / PHP ) et au final, en plus des fichiers DAO dans le langage choisi, on a les fichiers SQL pour créer les tables… la classe !
Après, on a aussi des truc genre La Grosse Berta, qui font le flex, le partie serveur… pas encore le café… mais bon on leur fait confiance ça devrait pas tarder…
Génération en ligne, le générateur se connecte à votre base et génère les classes php (5) des VO, les classes qui gèrent les transactions… le tout pour après faire du remoting avec amfphp1.9.
Et quelques mots pour conclure…
Le premier point, c’est que c’est des outils, pas autres choses, ils codent pas à notre place. Leur but est juste de supprimer des parties redondantes ou commune à la mise en place de projet Cairngorm, utilisant du Remoting ou pas…
De mon point de vue, le plus important dans ces outils, c’est leur rapidité d’utilisation, faut pas qu’on passe 3 heures à tout configurer aux petits oignons pour avoir une génération parfaite. Je pense qu’on gagne plus de temps à avoir une génération “presque parfaite” mais qui nécessite beaucoup moins de temps de préparation, et pour ca j’aime bien cairngen, car après l’avoir personnalisé, on modifie 10 lignes dans un fichier properties et c’est parti… par contre il fait que la partie flex. J’aime bien aussi l’approche de parti de la base de donnée pour généré ce qu’il faut coté serveur.
En tout cas après ça, si vous utilisez pas cairngorm… c’est que que vous avez une bonne raison !

--> 10 janvier 2008 ( 10:51 )
à noter pour les flemmards, que DAOgen nécessite quand même quelques petites modifs pour marcher correctement avec du Flex / Cairngorm / AMFPHP. çà méritera peut être un pti exemple…
--> 10 janvier 2008 ( 11:00 )
oui un exemple !!
--> 10 janvier 2008 ( 14:16 )
ma raison à moi de ne pas utiliser Cairngorm c’est d’utiliser PureMVC
--> 10 janvier 2008 ( 14:50 )
Pour ceux qui cherchent une bonnes raisons de pas se mettre à Cairngorm
PureMvc / Cairngorm / lowra
--> 10 janvier 2008 ( 17:01 )
Yo Lionel !
Merci pour le lien
Ceci dit je ne suis pas un anti-Cairngorm ( pas plus qu’un pro PureMVC ou un pro LowRA).
Ils ont tous des points forts et points faibles.
Je m’aperçoit à l’heure actuelle que faire un mix des fonctionnalités des uns et des autres permet d’arriver a une séries de classes mieux dimensionner.
--> 7 février 2008 ( 15:28 )
Merci d’avoir mentionné FCG
Pour info, FCG n’est plus seulement un générateur de code Cairngorm mais aussi PureMVC.
Plus d’infos ici :
http://www.dehats.com/drupal/?q=...
--> 8 février 2008 ( 14:11 )
Merci dehats pour cette superbe appli !