Amies Flexeuses, amis Flexeurs et adeptes du célèbre framework persillé, réjouissez-vous car voici venir la 3ème version majeure de l’inénarrable Parsley … ta daaaa !
Ça mérite une petite chansonnette, alors attention…
Tous en choeur
Un , deux , trois , quatre
Il est là Parsley version trois
Sonnez hautbois
Résonnez musettes
Il est là Parsley version trois
Acclamons ce framework de choix !
Eh bien oui, c’est Noël, nous l’attendions, le voilà, c’est bien lui, il est là.
Alors, trêve de blagues nulles désopilantes, brossons un tableau rapide des apports de cette major version pour nous autres, humbles développeurs Flex et AS3, toujours à l’affut d’une nouvelle factorisation de code et autre astuce architecturale qui embellirait notre code.
A ceux qui ne connaissent pas encore Parsley, je leur dis qu’il n’est pas trop tard, mais je les préviens que ce article ne leur expliquera pas comment s’en servir.
Ils pourront pour cela se référer à la documentation officielle, fort complète bien que touffue et parfois difficile à suivre: Site Officiel SpiceFactory
Toile de fond
L’architecture de P3 a été profondément restructurée, et elle est aujourd’hui garantie comme stable, notamment en ce qui concerne les éléments internes de Parsley.
Ceux d’entre nous qui étendent le framework d’une manière ou d’une autre peuvent enfin souffler, ils n’auront plus à – potentiellement – modifier leur code avec chaque nouvelle version du framework.
C’est singulièrement vrai pour la console Parsley qui devra être entièrement refondue pour fonctionner avec Parsley 3, car elle s’appuyait sur des factories copié/collé/dérivé (je sais, c’est mal), et donc bref, ça ne marche plus du tout.
La restructuration la plus visible est sans conteste l’éclatement du framework en de multiples librairies swc distinctes, permettant ainsi d’activer sélectivement telle ou telle fonctionnalité du framework.
Ainsi par exemple, les extensions Flex sont-elles maintenant empaquetées dans la librairie « parsley-flex.swc », au lieu d’être comprises dans la librairie Parsley elle-même.
Les nouvelles librairies principales
Plus quelques autres encore, dont spicelib-util qu’on trouvera dans le répertoire des dépendances de la librairie core. Il semble qu’elle soit parfois nécessaire pour compiler les projets avec FlashBuilder.
Les librairies sont disponibles au téléchargement, en mode individuel, ce qui n’est pas très pratique. Si vous utilisez Maven, vous devrez également déployer les artifacts manuellement, ou avec un petit script que je vous propose (en shell), à adapter à votre configuration, disponible sur demande.
Dépendances entre les librairies
Comme on peut le voir dans le schéma ci-dessous, toutes les librairies ne sont pas obligatoires, seule « parsley-core » l’est, mais évidemment il faudra respecter les dépendances entre librairies et inclure celles qui seront nécessaires:

Unification des Commandes et des Tasks
Dans les versions précédentes, 2.x, la librairie Spicelib offrait un système de Task synchrones, permettant d’enchaîner des tâches individuelles, avec une approche autonome et encapsulée. En parallèle, Parsley permettait (depuis les développements de Cairngorm3) d’avoir des Commandes, notamment étudiées pour être asynchrones, déclenchées par l’envoi d’un message associé à la commande, au niveau du Contexte.
Eh bien tout cela est maintenant unifié, les tâches (Task) sont remplacées par des commandes (Command), le tout dans la nouvelle librairie spicelib-commands.
Et du coup, les nouvelles commandes permettent à la fois de faire du synchrone ET de l’asynchrone.
Le codage des commandes est plus élégant que jamais, et totalement basé sur l’introspection des types:
Evidemment, pour les détails d’implémentation, il faudra bien relire la doc, pour ne pas se gourer dans les signatures des différents handlers, [CommandResult], [CommandFault], ou encore méthodes result() et error() internes à la commande.
Introspection avec Spicelib
Comme dans toutes les versions précédentes, Spicelib contient un ensemble de classes dédiées à l’introspection AS3, qui sont très utilisées par le framework.
Ces classes, basées sur le principe du ClassInfo en Java permettent d’introspecter des instances ou des classes, et d’en découvrir propriétés et méthodes publiques.
Cette API est incontestablement la plus avancée et la plus pratique de tout ce qui se fait en AS3, et je la recommande chaudement à tous ceux qui auraient besoin d’introspecter leurs classes.
Dans cette nouvelles version (en fait depuis la 2.4) il est également possible d’utiliser le nouveau formalisme JSON, plutôt que XML, retourné par la fonction describeTypeJSON, disponible avec Flash 10.1 et plus.
Cette méthode serait quatre fois plus rapide que son homologue en XML, et là aussi, Spicelib nous mâche le travail !
Conclusions
Avec cette nouvelle mouture, Parsley gagne définitivement ses lettres de noblesse – si ce n’était déjà fait – et confirme sa maturité technologique.
La facilité d’utilisation du framework, combinée avec ses possibilités d’extension et sa fiabilité en font un incontournable du développement d’applications Flex et AS3.
Dans cet article, nous n’avons pas parlé des autres possibilités de Parsley, comme les popup en MXML, les Binding découplés, ou encore les applications modulaires, mais il ne tient qu’à vous d’aller y voir de plus près.
Allez, je vous souhaite à toutes et tous de bien persiller vos applis Flex


