Flex : Les solutions serveur
Il ne faut jamais perdre de vue qu’une application Flex ne représente que la partie client de l’application, donc l’interface. Si votre application à besoin de communiquer avec une base de données, des webservices, et plus généralement un serveur, vous allez devoir choisir parmi les plateformes serveur celle qui convient le mieux à votre projet.
Une application flex peux communiquer avec un serveur de différente façon, nous allons les lister:
- Au travers de WebServices
- Via le protocol AMF
- Via RTMP ( communication temps réel )
- Via l’API URLReference
Les Webservices
Je ne décrirait pas ici ce qu’est un webservice, mais flex permet au travers de l’objet mx:WebService de s’y connecter. Les webservices obéissent à des normes, et peu importe la technologie serveur utilisée. Il est tout à fait possible d’écrire des webservices en .net, java ou même en php. Une application Flex est capable nativement d’établir une communication avec un webservice. Par exemple, interfacer le webservice de recherche de google et afficher les résultats dans une Datagrid ne devrait vous prendre que quelques dizaine de minute.
AMF
Depuis la version 6 du flashplayer, AMF ( Action Message Format ) est le protocole de communication privilégié entre le flashplayer et un serveur. C’est un format binaire basé sur SOAP. AMF est la solution la plus efficace, la plus légère et la plus rapide pour faire transiter des données entre le flashplayer sur le poste client et une serveur. Une multitude de projets permettent de générer un flux AMF.
Adobe fournit plusieurs solutions pour générer des flux AMF, les deux premières solutions sont écrites et destinées à des backends en JAVA.
- Life Cycle Data Service ( anciennement Flex Data Service ), c’est la version payante de la brique flex coté serveur.
- BlazeDS, est la version opensource et gratuite de LCDS, certaines fonctionnalités sont dégradées dans BlazeDS. Notez également que ce dernier est distribué sous licence GPL.
- ColdFusion
D’autres projets open-source permette de générer de l’AMF
- AMFPHP
- AMFRuby
- Granite Data Services
- PyAMF
Pour moi, l’intérêt principale d’AMF est principalement de ne pas avoir à se soucier de la sérialisation des données en XML coté serveur, ni de leur dé-serialisation coté client. Si je prends l’exemple d’une webapp java qui manipule des objets fortement typés ( en suivant le design pattern Value Object ), en utilisant AMF et avec la configuration adéquat, je récupérerait également des objets ActionScript 3 fortement typé coté client.
Le framework ActionScript Foundry sur et avec lequel je travail depuis plusieurs années privilégie clairement la solution AMF pour la communication client flex / serveur.
Une liste exhaustive des projets permettant la generation de flux AMF sur wikipedia
RTMP
RTMP est également un protocole de communication propriétaire d’Adobe, mais s’établit entre le client et le serveur une communication persistante. RTMP est notamment utilisé pour faire transiter des flux vidéo ou audio entre le flashplayer et un serveur, mais on peux également faire transiter un flux AMF. Si votre application Flex doit avoir une connexion persistante avec le serveur, c’est probablement vers RTMP que vous devez vous tourner.
Solutions serveur pour la mise en oeuvre de RTMP :
- Life Cycle Data Service
- Red5