sábado, 19 de abril de 2008

Desarrollando con Flex, flexmdi, PureMVC, BlazeDS, Spring, JPA, Hibernate,... (parte 1)

Estoy desarrollando mi primera aplicación con Flex y quería ir comentando mis "desavenencias" en este blog, por si os sirve -o me sirve a mi- de algo, en un futuro, mi experiencia.

El "producto" es una sencilla aplicación Flex que, previa autenticación del usuario y una vez comprobados sus privilegios, nos permitirá mantener la información guardada en una base de datos, mediante sencillos formularios.

El primer problema es encontrar el conjunto de herramientas que me van a acompañar en el desarrollo de este producto. Esta es mi lista, creo, definitiva:
  1. Base de datos: aunque trabajo normalmente con Oracle, el producto podrá funcionar con cualquier base de datos del mercado para la que tengamos un driver JDBC disponible. Es decir, casi todas las existentes o conocidas.
  2. Servidor de aplicaciones: casi toda la lógica de negocio de mi aplicación correrá del lado del servidor. He decidido, de momento, por aprovechar al máximo mi conocimiento en este campo, trabajar con la plataforma J2EE. El servidor de aplicaciones que utilizaré es JBoss, pero la aplicación funcionará en cualquier otro servidor, compatible J2EE, sin dificultad. Incluso, lo haré funcionar en un sencillo contenedor Apache Tomcat.
  3. Como herramientas de desarrollo, seleccionaré Eclipse y me aprovecharé, también, de la ventaja que supone poder utilizar el Flex Builder en modo trial durante unos meses.
  4. Para acceder a la base de datos y desarrollar la lógica de negocio más dura, del lado del servidor, he decidido utilizar la siguiente combinación: algunas clases del proyecto AppFuse (más concretamente la appfuse-jpa.jar y la appfuse-service.jar), el framework Spring y finalmente como implementación de JPA (persistencia Java) he seleccionado Hibernate (pero servirían también Toplink u OpenJPA).
  5. Para acceder desde Flex a los POJOs, los POJOs que desarrollaré del lado del servidor de aplicaciones, me he decidido por BlazeDS, por su madurez y potencia accediendo a objetos remotos. Además integraré BlazeDS con Spring de forma muy sencilla, con una factoría especial (llamada SpringFactory)... ya os contaré cómo. Esta factoría está disponible dentro de otro proyecto de integración llamado "RemoteDestination annotation for Spring".
  6. He decidido utilizar para la parte cliente (la desarrollada con Flex) un framework para construir aplicaciones basadas en el modelo MVC (model-view-controller). He seleccionado PureMVC, que tiene un "port" para Flex y que, aunque al principio me ha costado entender su funcionamiento, creo que le sacaré bastante provecho.
  7. Seguramente utilizaré, a futuro, múltiples librerías SWC. de momento me he descargado la flexmdi (no puedo vivir ;-) sin crear ventanas en modo MDI en mis aplicaciones). Quizá la utilicé o quizá no, ya veremos.
  8. Por supuesto, necesitaré el SDK de Java (una versión 5.0 ó superior) y el SDK de Flex (una versión 3 o superior).
Intentaré dejar en algún sitio, próximamente, un esqueleto de aplicación con todo esto en un paquete, para que sea más fácil empezar con el desarrollo.

No hay comentarios: