Votre souci : vous souhaitez une interface cliente riche tout en disposant d’une architecte puissante du côté du serveur. Comment faire ?
Regardons ce qu’il se passe aujourd’hui : terminé le temps de la page HTML qui se recharge complètement. Les utilisateurs finaux veulent de l’interactivité, une interface riche et une ergonomie fantastique. D’un autre côté, le souci pour vous en tant qu’architecte est de conceptualiser et écrire une couche de service correcte.
Pour le projet sur lequel je travaille, nous avons une application développée avec JBoss Seam en début d’année. Le développement avec IceFaces des écrans principaux ne m’a pas pris beaucoup de temps. Par contre, s’agissant d’une application de surveillance et de monitoring, j’ai pas mal de difficultés à obtenir un résultat puissant en terme d’ergonomie et de réactivité. Je me suis donc tourné avec bonheur vers Adobe Flex. Le fait aussi de pouvoir fonctionner en mode déployé avec Adobe AIR est un plus.
En prenant JBoss Seam et Adobe Flex, il est possible de faire une application vraiment puissante. Pour cela, Exadel Flamingo est vraiment la dernière brique qu’il me manquait pour finaliser l’architecture. Flamingo est un outil très puissant qui permet tout d’abord de générer rapidement une application type CRUD avec une interface utilisateur en Flex. Si vous avez testé seam-gen, vous voyez ce que je veux dire. Flamingo utilise le protocole binaire AMF d’Adobe pour la communication entre l’interface cliente déployée en Flash du côté navigateur et donc, la partie serveur basée sur JBoss Seam. C’est similaire à un déploiement avec BlazeDS ou LiveCycle. Cela dit, en terme d’échanges d’objets, je me demande si JBoss Seam va aussi loin que LiveCycle.
L’intérêt de Flamingo est qu’en générant du code pour vous, il facilite l’écriture en ActionScript du côté du client. Après avoir défini une Entité du côté de Seam, vous pouvez facilement appeler un ensemble de méthode simple pour effectuer la recherche ou la mise à jour de votre entité à partir du code ActionScript. Flamingo est donc avant tout un générateur de code destiné à réduire la quantité de code à écrire, et qui facilite l’accès aux Entity EJB3 gérées par Seam.
Les échanges entre le client en Flex et le serveur JBoss Seam peuvent s’effectuer soit via une Servlet spéciale de Flamingo, soit via la partie Remoting de JBoss Seam.
Flamingo travaille avec Maven2 pour générer la glue entre JBoss Seam d’une part et les technologies RIA comme Flex ou JavaFX d’autre part.
Le mieux sera de vous écrire un petit exemple complet pour que vous puissiez vous faire une idée de l’intérêt de Flamingo. Désolé faute de temps je vous laisserai que deux URL pour que vous puissiez regarder :
– version JBoss Seam avec JSF seul
– version Adobe Flex avec protocole AMF
Retrouvez d’autres urls à cette adresse :
http://demo.flamingo.exadel.com/booking/booking.html
Je profite de ce post pour signaler que le projet GraniteDS/Tide (http://www.graniteds.org) permet également une intégration extrêmement poussée entre Flex et Seam. L’approche est un peu différente, mais GDS/Tide propose un certain nombre de fonctionnalités très puissantes : accès paginé aux données fournies par des composants Query Seam, lazy loading automatique des collections, gestion des événements asynchrones, etc…