Flex 4 – (2) Conception d'une architecture Flex orientée composant
Si vous suivez flex-tutorial, vous avez sûrement vu que je parlais que peu souvent des framworks MVC (Cairngorm, PureMVC, Mate, Parsley pour ne citer que les plus populaires). Cela vient du fait qu'après avoir regardé la plupart des frameworks, aucun ne me paraissait correct.
Les problèmes apportés par les frameworks MVC
Plusieurs raisons (subjectives) à cela:
- Aucun framework n'est "ultra-populaire" et écrase tous les autres. C'était le cas pour Cairngorm au départ car Adobe poussait à utiliser son produit mais le choix est maintenant plus hétérogène. Admettons que l'on apprenne le fonctionnement de Cairngorm et qu'on le maîtrise. Si vous tombez sur un poste où tous les projets utilisent PureMVC, vous pouvez mettre vos compétences au placard.
- La majorité des frameworks MVC pour Flex amènent avec eux, une architecture (dossiers/sources). Si vous décidez que pour une raison X, le framework ne convient plus à votre besoin, vous aurez un gros travail de refactoring à faire qui va se révéler laborieux (encore plus avec les bugs de Flex Builder 3, corrigés pour Flash Builder 4). Quand vous vous engagez sur un framework, vous êtes "couplé" à lui.
- Les frameworks basés sur les annotations (Mate, Parsley, …) ne vous imposent que très peu d'architecture et viennent se greffer sur votre code. Le problème est que de cette manière, beaucoup de choses se passent "under the hood" de manière un peu magique, et cela peut rendre le debugging laborieux.
- A la base, le paradigme MVC a été crée pour avoir des classes qui ne sont pas couplées entre elles et les plus atomiques possible (une des bases de la programmation OO). Pour certains frameworks MVC comme Cairngorm, vous devez sans cesse faire des héritages sur des classes du framework (tous les Event par exemple dérivent de CairngormEvent). D'autres comme Robotlegs vous obligent à enregistrer vos objets (à les "mapper") dans des Singletons. Cairngorm utilise lui aussi des Singletons pour un peu tout (Services, Model, …) ce qui va nuire à la ré-utilisabilité et à la modularité de votre code.
- Aucun des composants Flex disponibles sur le net n'est basé sur les classes d'un framework en particulier. Pour rester neutre, l'écrasante majorité des composants que l'on trouve sur le net ne sont pas écrits en se basant sur un framework. On peut donc se retrouver avec un code hétérogène.
- L'utilisation d'un framework implique que tous les développeurs comprennent les concepts d'utilisation du framework. Cela va venir s'ajouter au temps de développement du projet.
- En plus de "subir" la roadmap d'Adobe sur le SDK Flex, vous devrez parfois attendre la migration de telle ou telle fonctionnalité sur le framework choisi. Comme tous ne sont pas open source, vous pouvez vous retrouver bloqué.
Ces considérations sont générales à tous les framework. Chaque framework ayant ses spécificités, va aussi apporter d'autres points bloquants (trop long de tous les faire). Après il y a sûrement des points positifs à l'utilisation de chacun de ses frameworks mais qui, selon moi, ne pèse pas assez lourd dans la balance. Bien sûr, si vous voulez lancer un petit débat, vous pouvez laisser un commentaire à cet article
.
Adopter une approche différente
Pour le projet sur lequel je travaille actuellement, il me fallait donc trouver une solution cohérente, extensible et ré-utilisable pour l'architecture du projet. Ayant écarté l'utilisation d'un framework en particulier, il fallait donc trouver une solution qui ne m'oblige pas à re-inventer la roue. L'approche que j'ai adopté a été inspirée au départ de cet article:
Flex Best Practices – Models, Views, and Controllers
Le challenge avec l'utilisation du paradigme MVC (Model-View-Controller) est que chacun a un peu son implémentation (plus ou moins passive).
J'ai donc décidé de simplement intégrer les concepts-clé de la POO:
- Couplage faible entre les objets
- Pas de singletons (variables globales)
- Séparation of concerns (cloisonnement des fonctionnalités de chaque objet pour qu'il soit le plus atomique possible)
- Keep It Simple and Stupid & Don't Repeat Yourself
Flash Player bientôt packagé avec Google Chrome
Une petite news, si vous l'avez ratée
. Les devs de Google Chrome ont annoncé que les prochaines versions de Chrome (dont celle en développement) vont embarquer une version de Flash Player. Plus besoin donc pour les personnes installant Chrome d'aller télécharger Flash Player quand ils iront sur Youtube pour la première fois. Les mises à jour de FP seront aussi transparentes en utilisant les mises à jour Chrome. Une intégration bien plus fine et transparente pour l'utilisateur qu'auparavant.
Au passage, la Mozilla Corporation et Google ont annoncé qu'ils travaillaient à la refonte de leur système de plugin, basé sur NPAPI (N étant "Netscape", oui oui). Au programme donc, une bien meilleure intégration dans le browser et dans le HTML. En gros, Flash Player s'occuperait du rendu des SWF et voilà. Il pourrait potentiellement profiter de la sauvegarde des mots de passe par le browser ou bien des techniques de SEO.
Plus d'informations sur le développement de la nouvelle architecture de plugin Mozilla
Voilà donc une bonne nouvelle pour Flash Player qui est souvent critiqué pour son intégration dans le browser avec le HTML qui l'entoure. Au moment où Apple boude FP "parce que les standards et le HTML5 c'est trop l'avenir", on peut voir que certains gros du domaine arrivent à se mettre d'accord pour mettre des choses en place.
Bon après, Chrome ne représente que 7% des navigateurs et IE sera toujours à la traine mais c'est encore un autre débat
Flash Builder 4 – Installation de Subversive et connecteurs SVN
Maintenant que vous utilisez Flash Builder 4, il vous faut tous les outils qui vont bien pour un développement "entreprise". Parmi eux, un système de versionning bien sûr type SVN. Il vous faudra ensuite un plug-in Eclipse pour pouvoir Checkout vos projet, Update, Commit et autres. Pour cela, vous pouvez installer Subversive qui fait très bien cela.
Si vous êtes encore sous Flex Builder 3, voici le tutorial qu'il vous faut:
Flex Builder 3 et SVN – Installer Subversive sur Flex Builder
Installation de Subversive sous Flash Builder 4
Flash Builder 4 étant basé sur Eclipse 3.5.1, vous pouvez profiter des améliorations de celui-ci. Et parmi ces modifications, l'ajout d'un plugin SVN devient bien plus simple.
Tout d'abord, rendez-vous dans le menu Eclipse Help > Install New Software > (New). Une fois arrivée sur la fenêtre "Install", vous devez aller chercher l'update Site de Galileo.
- Si vous êtes sur Eclipse, il est déjà présent dans le menu déroulant "Work with:".
- Si vous êtes sous Flash Builder 4, il faut l'ajouter (Add… > Name: Galileo, Location: http://download.eclipse.org/releases/galileo)
Choisissez ensuite dans Collaboration > Subversive SVN intégration for the Mylyn Project et Subversive SVN Team Provider:
Si cela ne fonctionne pas pour une raison obscure, installez tout d'abord "Subversive SVN Team Provider" puis l'autre. C'est ce qui m'est arrivé.
Attention, si vous êtes sous Windows et que le path vers Eclipse contient un espace (Program Files (x86) par exemple), il y aura une erreur au moment de l'installation (erreur de unzip). Pour corriger cela, fermez Eclipse, copiez-le Eclipse à la racine de C:\ par exemple et refaites la manipulation.
Next, Next, Accept, blah blah blah et redémarrez Eclipse / Flex Builder.
Au redémarrage du programme, une fenêtre devrait apparaitre pour vos proposer de choisir votre connecteur. Pour ma part j'ai pris le dernier SVNKit. Il lance une erreur au premier accès à SVN sous Flash Builder mais il fonctionne ensuite normalement.
Rédemarrez votre programme et vous aurez vos nouvelles vues/perspectives pour SVN
Décore ta chambre avec des posters Flex trop g33k
Tu codes dans une cave et les murs te paraissent un peu fades? Adobe a tout prévu et te permet d'imprimer des posters trop g33k sur ton framework préféré.
Télécharger les posters ActionScript 3 et Flex Framework (PDF)
J'avais reçu les posters pour Flex 3 à l'époque de sa sortie et autant vous dire qu'il faut minimum du A1 pour commencer à y voir quelque chose
Sortie de FlexPMD 1.1 / FlexCPD 1.1 / FlexMetrics 1.1
Il y a quelques mois (6 en fait), je vous présentais des outils à la fois puissants et pratiques pour mesurer et corriger les bonnes pratiques dans votre développement. Ces outils sont développés par une petite team comprenant des français (voir le blog de Xavier Agnetti). Les trois projets sont hébergés sur le portail Open Source d'Adobe.
Est tout d'abord sorti FlexPMD permettant d'analyser votre code et d'en fait l'audit. Si vous ne vous rappelez pas, voici l'article présentant cet outil:
FlexPMD – Un outil pour faire l'audit de vos projets Flex / AS3 / Air
Est ensuite sorti, un plug-in Eclipse / Flex Builder pour vous simplifier la vie:
FlexPMD – Le plug-in Eclipse / Flex Builder 3 / Flash Builder 4 disponible
Pour la version 1.0, ils ont en même temps sorti FlexCPD, pour détecter la duplication de contenu dans votre code ainsi que FlexMetrics, qui vous permet d'avoir quelques statistiques sur votre code. Ces plugins peuvent facilement se greffer sur votre système d'intégration continue (Hudson et autres), ce n'est pas non plus le genre d'outil que l'on va utiliser pendant le dev, il permet juste de contrôler les versions release que vous allez publier tous les jours.
Pour ceux qui s'en inquiètent, ces 3 outils fonctionnent avec Flex 4 et Flash Builder 4 sans souci.
Comme l'indique le titre, les versions 1.1 de ces 3 outils sont sorties, corrigeant une bonne série de bugs (voir les release notes / bugs corrigés). N'oubliez donc pas de vous mettre à jour






