Turbine es un framework basado en la especificación Servlet que permite a los desarrolladores crear rápidamente aplicaciones web seguras. Está compuesto por varios módulos que pueden ser usados independientemente. El objetivo de Turbine es recolectar el código repetitivo en una localización y hacerlo más fácil para crear componentes reusables (tales como parsing de parámetros, Pools de conexiones a bases de datos, programación de tareas, cachés globales, integración con otras herramientas como Castor, Velocity, Webmacro, etc â¦) todas bajo una licencia (Apache) que te permite crear útiles sitios web. Ofrece una serie de servicios cargados al arranque, como logging, localización, pooling, nombramiento JNDI… Actualmente todos estos servicios se están migrando para que sean independientes del framework y puedan ser cargados a través de Avalon Component Service.
• Modelo de programación
Sigue un modelo basado en el patrón de diseño FrontController y el patrón Command1 . Las clases-acción son usadas para manejar cualquier petición del usuario que requiera interacción con el modelo. Pueden asociarse diferentes acciones para cada elemento de entrada de un formulario html. Las acciones no son asociadas con una única página, si no que puedes reutilizar una acción con varias páginas distintas.
Los módulos que componen Turbine son los siguientes:
• Action: Pemite realizar acciones en respuesta a peticiones HTTP del usuario.
• Page: Es el primer módulo en la cadena de ejecución de la generación de páginas. Se le considera como una caja que contiene al resto de módulos. Se encarga de comprobar si hay una Action definida en la petición y ejecutarla.
• Screen: Es considerado el cuerpo de la página web. En este módulo es donde se genera el HTML. Desde este módulo se puede ejecutar código externo para hacer uso de frameworks de presentación como Cocoon, o importar datos de la capa de integración.
• Navigation: Representa los menús de navegación y se encarga de controlar el flujo de páginas.
• Layout: Define la estructura física de la página. Define la posición del menú Navigation y del cuerpo (Screen) de la página.
• Capas afectadas
El núcleo del framework es capaz de manejar la capa de presentación y negocio.
• MVC push/pull
Es capaz de usar ambos sistemas, Push y Pull.
Puedes asociar una clase-acción con una página y hacer uso de sus variables, pero también puedes invocar una serie de componentes definidos en el API.
• Internacionalización (i18n) y localización (L10n)
Turbine cuanta con un sistema de Internacionalización y localización llamado Fulcrum, que se está migrando para ser un servicio independiente. Permite accceder a mensajes multiidioma desde los motores de plantillas.
• Sistema de seguridad
Dispone de un servicio para manejar Usuarios, Grupos, Roles y Permisos en el sistema, permitiendo que a estos objetos interactuar con bases de datos o LDAP. El servicio además permite que la seguridad sea manejada sin ningún backend.
• Sistema de plantillas (templates)
Turbine viene integrado con velocity como sistema de plantillas. De hecho, originalmente velocity fue diseñado como parte de Turbine. También tiene servicios para integrarse con FreeMarker.
• Sistema de validación
El subsistema Intake se encarga de la validación de las entradas de formularios basándose en las restricciones definidas en un archivo XML.
• Sistema de navegación (pageflow)
El módulo Navigation es el encargado de controlar el fujo de navegación de la aplicación.
• Sistema de caché
A través de los servicios cargados al inicio proporciona un mecanismo de almacenamiento de objetos en memoria.
• Testeabilidad
Para las pruebas de unidad no hay problema ya que las calses-acción son POJOs. Para las pruebas de integración se necesita hacer uso de un contenedor de servicios avalon como Phoenix o Excalibur.
• Mapeo Objeto-Relacional (ORM)
Turbine viene integrado con Torque. Torque es un paquete que se encarga de manejar la relación de la aplicación web con la base de datos. Representa la base de datos a través de un esquema XML y genera una serie de objetos que se comunican con la aplicación y el esquema.
Originalmente Torque se desarrolló como parte del framework Turbine en la versión 2.1, pero después pasó a ser una aplicación independiente.
También permite la integración con otros sistemas ORM como OJB o Hibernate.
• Programación Orientada a Aspectos (AOP)
No soporta Programación Orientada a Aspectos.
• Inyección de dependencias (DI)
No soporta Inyección de dependencias.
• Ajax
El soporte para Ajax depende del motor de visualización que se emplee.
• Configuración
Se puede especificar la configuración de dos formas, a través de una archivo properties o a través de un archivo XML.
• Extensibilidad
Turbine está diseñado de forma modular con el fin de ser fácilmente extensible y poder hacer uso de tecnologías externas como sistemas ORM o motores de plantillas.
• Madurez
Turbine es un framework maduro y estable con mas de 6 años de experiencia y ha sido usado como base de otros proyectos como Jetspeed.
Páginas como www.netbeans.org o www.openoffice.org hacen uso de Turbine.
• Última versión
La versión recomendada desde la página oficial es Apache Turbine 2.3.2
• Curva de aprendizaje
El núcleo del framework se basa en un modelo popularmente conocido, y el resto de funcionalidades se ofrecen como servicios, por lo que la curva de aprendizaje es relativamente pequeña para desarrolladores con experiencia.
• Documentación
Ofrece una buena visión general del framework pero el tutorial y la guía de usuario apenas están esbozados.
1Ver Anexo A
0 comentarios