Flex 4 – Pointez vers des RSLs en dehors de votre projet
Framework RSL’s in Flex Builder vs Flash Builder, Performance and Important Info
Vous le savez peut-être, avec Flash Builder 4, le framework est exporté en RSL par défaut. Cela signifie que le code du framework Flex ne se trouve pas dans votre application mais dans un fichier .SWZ séparé. Si vous ne connaissiez pas ce fonctionnement, voici un article sur les RSLs avec Flex Builder 3, toujours valable:
Flex RSL – Utilisation des RSL du Framework Adobe Flex
Vous l'avez compris, les RSLs ont un intérêt certain si vous avez plusieurs applications Flex.
A la compilation de projets Flex dans Flash Builder 4
Il est important de comprendre maintenant ce qui se passe quand un projet est "build" dans Flash Builder 4. La configuration par défaut fait que le compilateur va créer une copie de chaque RSL (fichier .SWZ) dans le répertoire de build. Ce qui signifie que lorsque vous faites une Release Build, vous aurez une copie de chacun des 6 .SWZ (entre 60 et 620Ko).
Voici la liste de ces SWZ (les numéros de builds pouvant varier):
- framework_4.0.0.14159.swz
- osmf_flex.4.0.0.13495.swz
- rpc_4.0.0.14159.swz
- spark_4.0.0.14159.swz
- sparkskins_4.0.0.14159.swz
- textLayout_1.0.0.595.swz
Pour une seule et même application, cela ne vous posera pas de problème mais lorsque vous avez de très nombreuses applications, cela va démultiplier le nombre de fichier inutilement. Par exemple, c'est le problème soulevé par ce développeur de Tour de Flex (des centaines d'applications). Ou imaginez même que vous avez un blog consacré à Flex, qui va contenir de plus en plus d'exemples Flex 4: l'auteur va-t-il envoyer les fichiers RSLs à chaque fois par FTP
.
Modifier le chemin par défaut vers les RSLs
Heureusement, une solution simple existe comme le précise cet article:
Framework RSL’s in Flex Builder vs Flash Builder, Performance and Important Info
Il suffit pour cela d'aller modifier la configuration par défaut de votre compilateur pour pointer vers un emplacement différent (URL unique). Il y a 2 tags XML qui précisent l'emplacement des RSLs:
- Le premier est celui vers les RSLs hébergés par les serveurs Adobe. Laissez-là telle qu'elle est
- Le second est le '"failover", celui qui va être pris en compte si les serveurs Adobe ne sont pas accessible pour N raisons. C'est ce chemin que vous devrez modifier.
Master Class Advanced Flex @ Bruxelles, Retour en images
La semaine dernière a eu lieu la Master Class Advanced Flex à Bruxelles, un séminaire donné par l'équipe de Farata Systems. Vous l'aviez peut-être deviné, j'étais présent pour ce séminaire. Autant être clair, si vous n'y étiez pas, vous avez raté une des conférences les plus intéressantes (en France et ses alentours en tout cas).
J'ai eu l'occasion de rencontrer quelques uns (6 je crois) des lecteurs de flex-tutorial.fr à cette occasion (certains que je connaissais seulement par GTalk), c'était vraiment intéressant d'échanger en direct
. Un bonjour à eux
Le Hilton, c'est classe
Le séminaire s'est passé sur 2 jours, au Hilton de Bruxelles. Pour planter le décor, les 2 jours se sont passés au 27e étage du Hilton, dans une salle de réunion panoramique avec sûrement une des meilleures vue sur tout Bruxelles. Rien que pour cela, cela valait le coup. Étaient présentes, une trentaine de personne, ce qui a permis de pouvoir communiquer facilement et de poser des questions. Quelques photos sont disponibles à la fin de cet article.
Le premier soir, l'équipe de Farata Systems a invité tous les participants à prendre une tournée de binche au bar du Hilton, un geste très sympa. Rajoutez à cela le buffet à volonté le midi (et c'est pas celui du Flunch) avec de très bons vins compris dans le prix(400 euros), ce séminaire était une aubaine
.
Assez parlé du contexte, parlons maintenant du contenu.
Les présentateurs de chez Farata Systems
Ils étaient 3 pour animer ce séminaire, chacun spécialiste dans sa "branche" (compilation et optimisation, développement et aspect humains, …): Victor Rasputnis, Yakov Fain et Anatole Tartakovsky. Trois américains d'origine d'Europe de l'Est avec un accent anglais plutôt sympa ^^.
Ils sont tous consultant/développeur, venant du monde Java avec des bonnes années d'expérience derrière eux. Ils ont notamment écrit plusieurs livres spécialisés, notamment:
- Programmation Java pour les enfants, les parents et les grand-parents
- Enterprise development With Flex (disponible en achat en ligne, bientôt en imprimé)
- Flex and Java (je n'ai pas trouvé le lien mais ils me l'ont offert pendant la conférence ^^)
On a eu affaire à de vrais pros, qui ont développé des projets de grande envergure depuis des années. Ils ont tourné et modifié Flex et l'ActionScript dans tous les sens et connaissent tout sur le bout de doigts.
Ce qu'on a pu voir en 2 jours
2 jours, cela peut paraître long sur Flex mais ce fut en fait trop court pour pouvoir tout aborder. Le programme de ce séminaire était très chargé et on a pas eu le temps de tout aborder. De nombreux points sont déjà abordés dans leur blog mais il est toujours plus intéressant de les voir expliqués en live.
Voir le blog Flex de Farata Systems
Voici les points abordés qui m'ont le plus intéressé:
Flex RSL – Utilisation des RSL du Framework Adobe Flex
Les composants du framework Adobe Flex sont disponibles dans des librairies SWC. Elles peuvent être chargées à l'exécution comme RSLs (linkage dynamique). Les RSLs du framework sont supportées uniquement à partir de Flash Player 9.0.60. Les RSL du framework ne sont pas exactement comme les RSL de base, car ils sont signés. Ils ont aussi une extension différente: .swz, indiquant que le RSL est un "signed RSL". Seul Adobe peut créer des SWZ signés.
Vous les trouverez dans votre répertoire d'installation de Flex/Flash Builder:
C:\Program Files\Adobe\Flex Builder 3 Plug-in\sdks\3.2.0\frameworks\rsls
Pour définir le framework Flex comme RSL, rendez-vous dans les propriétés de votre projet Flex Build Path > Library Path. Depuis la ComboBox "Framework Linkage",choisissez "RSL". Le framework Flex sera ainsi séparé du SWF applicatif. Quand l'utilisateur va télécharger le framework une première fois, il va être conservé dans son cache. Encore mieux, ces librairies peuvent être utilisées depuis plusieurs domaines. Cela veut dire que les utilisateurs peuvent le récupérer depuis n'importe quel site déployé avec le Flex Framework en RSL, pas forcement celui de votre site.
Les RSL signés ne sont pas gardés en cache dans le cache du navigateur mais en local sur le disque. Ainsi, ils ne sont pas affectés par les utilisateurs qui vident leur cache.
Vous trouverez notamment les RSLs suivants:
- framework_3.2.0.3958.swz
- datavisualization_3.2.0.3958.swz
- rpc_3.2.0.3958.swz
Comme vous le constatez, le nom du fichier inclut la version du framework Adobe Flex ainsi que le numéro de build (3958).
Flex RSL – Utilisation de RSL Cross-Domain
Dans l'article précédent, on a vu comment utiliser les RSL standard Flex. Les RSL cross-domain sont des RSL standard (c'est-à-dire une librairie de composants) sauf qu'il sont accessibles depuis plusieurs domaines / sous-domaines. C'est pourquoi, à la fois au moment de la compilation et du déploiement, vous devrez spécifier un fichier cross-domain. Le processus de création du SWC n'est pas différent, sauf que vous devez créer une fichier de security policy crossdomain.xml avec le fichier SWC.
Au moment de la compilation, vous devrez passez l'emplacement du fichier de cross-domain ainsi que l'emplacement du "failover" RSL. C'est-à-dire l'emplacement du RSL à charger si l'accès au domaine échoue. Ces arguments sont passés en tant que paramètres de lignes de commande ou sont spécifiés dans la configuration XML passée au compilateur. Voici à quoi ressemble le code:
mxmlc -runtime-shared-library-path=
pathTo/sharedLibrary.swc,
pathTo/library.swf,
pathTo/crossdomain.xml,
pathTo/failoverLibrary.swf,
FlexApplication.mxml
Le chemin peut être relatif ou absolu (URL complète). Le chemin vers le fichier crossdomain.xml doit être spécifié par une URL absolue car il doit être accessible depuis plusieurs domaines.
Voici les mêmes informations mais dans le fichier de configuration de compilation XML (flex-config.xml):
<runtime-shared-library-path> <path-element>pathTo/sharedLibrary.swc</path-element> <rsl-url>pathTo/library.swf</rsl-url> <policy-file-url>pathTo/crossdomain.xml</rsl-url> <failover-url>pathTo/failoverLibrary.swf</failover-url> </runtime-shared-library-path>
Vous devrez bien sûr faire un upload du fichier crossdomain.xml sur le serveur du domaine que vous souhaitez interroger.
Flex RSL – Utilisation de RSL standards
Les applications Adobe Flex modulaires, qui utilisent des librairies ré-utilisables sont les meilleurs candidates à l'utilisation des RSL. Dans cet article, on va voir comment utiliser ces RSLs dans la pratique.
Il y a quatre étapes à suivre quand on veut utiliser les RSL:
- Créer une librairie de composants / classes
- Compiler l'application Flex pour qu'elle utilise la librairie de composant
- Optimiser le RSL, si besoin est
- Déployer l'application et le RSL
Création d'une librairie de composants
La première étape consiste à créer une librairie ré-utilisable et d'en faire un package pour qu'elle puisse être facilement redistribuée. Flex Builder 3 permet de créer facilement ces projets librairie. A partir de ce projet, le compilateur Flex va compiler un fichier SWC. Un fichier SWC est une archive qui contient des composants Flex et d'autres éléments (images, font, …). Si vous décompressez cette archive, vous trouverez deux fichiers:
- Un fichier SWF, souvent appelé library.swf
- Un fichier XML "manifest" appelé catalog.xml, qui contient la liste des composants inclus dans la librairie.
Pour commencer la création d'une librairie Flex, créez un nouveau projet de type Flex Library Project et pas Flex Project:

Une librairie SWC peut être compilée de plusieurs manières, soit en ligne de commande avec le compilateur "compc", soit par Flex Builder. Dans notre cas, on va laisser Flex Builder faire le travail.





