26 janvier 2009

Pile technologique pour projet Flex

Une fois Flex choisis comme technologie de présentation, il reste à monter sa pile technologique pour son projet: accès aux bases de données, découpage en "couches", architecture globale de communication entre ces couches...

Voici un retour d'expérience, pour vous aider à choisir:
  • accès aux données: plusieurs choix possibles. Si vous avez les connaissances et que vous voulez coller le plus possible aux standards, partez sur du JPA (Java Persistence API). Contrairement aux EJB 2.x Entity et à JDO, la spécification semble bien partie pour s'imposer. Après, il vous reste une multitude d'implémentations; Hibernate ou Oracle TopLink (Essentials) sont des bons choix. Du côté de mon équipe, qui n'a pas beaucoup de compétence mapping objet-base relationnelle, on est sur du iBatis, solution très légère et très propre, très simple à mettre en place.
  • EJB ou pas EJB? Tout dépend de la taille de votre projet. Pour des projets petits ou moyens, plutôt simples dans les process et ne demandant pas une fiabilité extrême, pas besoin d'EJB, un Tomcat suffira amplement. Après, si vous vous orientez vers EJB 3, cela reste un choix très valable. Dans ce cas, il vous faudra un serveur implémentant la spécification complète. GlassFish est un des plus populaire actuellement. JBoss et Apache Geronimo sont également très bons, et du côté des commerciaux, Oracle WebLogic reste très bien, même si en perte de vitesse par rapport aux Open Source.
  • architecture interne de l'application: orientée Services (au sens architecture, pas au sens marketing...), à base de Spring (beans), ou de Guice (projet Google) assez à la mode en ce moment. Si vous êtes sur de l'EJB 3, vous avez déjà tout ce qu'il vous faut (à travers les annotations notamment).
  • communication serveur - client Flex: assurément BlazeDS se révèle être une excellente surprise. Utilisez le mode AMF si vous le pouvez (ce qui est certainement possible), pour échanger en mode binaire et optimisé entre le serveur et le client. Il est très simple de brancher BlazeDS sur Spring (je suppose que cela se fait également facilement avec de l'EJB 3)


Au final, pour notre petit projet (200 jours/h), on est arrivé à d'excellents résultats avec:
- Frontal Apache HTTP
- Apache Tomcat

- BlazeDS
- Spring
- iBatis

Très léger à mettre en place, et les développeurs ont facilement appris toutes ces technos.