Seleccionar página

Este es el pimer artículo de una serie en la que se va a realizar una comparativa entre varios de los frameworks MVC opensource que existen actualmente.

”Framework” es una palabra que se usa (y de la que se abusa) mucho actualmente en el desarrollo de aplicaciones. Sin embargo puede que alguien no tenga claro el concepto de los que es un framework para el desarrollo de aplicaciones web. Podría definirse como un conjunto de clases que cooperan y forman un diseño reutilizable formando una infraestructura que facilita y agiliza el desarrollo de aplicaciones web.

En este primer artículo, a modo de introducción, voy a describir los puntos en los que basaré la comparativa.

Puntos de comparación

Como funciona

Modelo de programación

Breve descripción del funcionamiento básico del framework

Capas afectadas

Consideraremos una arquitectura multicapa

La capa del cliente es donde se consumen y presentan los modelos de datos. Para una aplicación Web, la capa cliente normalmente es un navegador web.

La capa de presentación expone los servicios de la capa de negocio a los usuarios. Sabe cómo procesar una petición de cliente, cómo interactuar con la negocio, y cómo seleccionar la siguiente vista a mostrar.

La capa de negocio contiene los objetos y servicios de la lógica de negocio de la aplicación. Recibe peticiones de la capa de presentación, procesa la lógica de negocio basada en las peticiones, y media en los accesos a los recursos de la capa EIS. Los componenes de la capa de negocio se benefician de la mayoría de lo servicios a nivel de sistema como el control de seguridad, de transaciones y de recursos.

La capa de integración es el puente entre la capa de lógica-de-negocio y la capa EIS. Encapsula la lógica para interactuar con la capa EIS. Algunas veces a la combinación de las capas de integración y de lógica-de-negocio se le conoce como capa central.

La capa EIs almacena los datos de la aplicación. Contiene bases de datos relacionales, bases de datos orientadas a objetos, y/o sistemas antiguos.

MVC push/pull

Hace referencia a cómo son accesibles los objetos de la capa de negocio desde la capa de presentación.

MVC Push indica que un objeto de la capa de negocio está asociado a una página.

MVC Pull indica que uno o varios objetos están disponibles para todas las páginas.

Qué ofrece

Internacionalizacion (i18n) y localización (L10n)

El sistema de internacionalización asegura que una aplicación sea capaz de adaptarse a los requerimientos locales del cliente, por ejemplo asegurar que los caracteres de su idioma puedan ser mostrados.

El sistema Locacalización intenta que la aplicación se adapte a la cultura del cliente, mostrando las fechas en un determinado formato, usando determinados sistemas de medida, etc.

Sistema de seguridad

Se encarga de los mecanismos de control de autenticación y acceso.

Sistema de plantillas (templates)

Facilita y agiliza el desarrollo de los componentes de la vista a través de esquemas, siguiendo los principios de separación de capas, flexibilidad, reusabilidad.

Sistema de validación

El sistema de validación se encarga de comprobar que los datos que el cliente introduce a través de la capa de presentación sean válidos.

Podemos realizar la validación de los datos en el cliente, en el servidor o en ambos.

Sistema de navegación (pageflow)

Es el encargado de determinar cuál será la próxima página a mostrar según determinados parámetros como la página actual, la operación realizada, el resultado de dicha operación o el rol del usuario.

Sistema de caché

Permite almacenar en memoria cualquier información relativa al estado de la aplicación o resultados de una consulta a una base de datos, mejorando el rendimiento.

Testeabilidad

Las pruebas de software verifican que el software desarrollado o modificado cumple los requerimientos solicitados de forma satisfactoria.

Mapeo Objeto-Relacional (ORM)

El mapeo objeto-relacional es una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional.

Analizaremos si el framework evaluado nos ofrece algún sistema ORM o permite la integración con uno.

Programación Orientada a Aspectos (AOP)

La Programación Orientada a Aspectos, más conocida como AOP por su nombre en inglés Aspect Oriented Programming, es un modelo de programación que aborda un problema específico: capturar las partes de un sistema que los modelos de programación habituales obligan a que estén repartidos a lo largo de distintos módulos del sistema. Estos fragmentos que afectan a distintos módulos son llamados aspectos y los problemas que solucionan, problemas cruzados (crosscutting concerns).

Usando un lenguaje que soporte AOP, podemos capturar estas dependencias en módulos individuales, obteniendo un sistema independiente de ellos y podemos utilizarlos o no sin tocar el código del sistema básico, preservando la integridad de las operaciones básicas.

Inyección de dependencias (DI)

Este patrón de diseño consiste en resolver las dependecias de cada clase (atributos) instanciando los objetos cuando se arranca la aplicación e inyectándolos en los objetos que los necesiten. De esta forma liberamos a los objetos de la responsabilidad de instanciar otros objetos y delegamos este trabajo a una factoría que pueda realizar más eficientemente esta tarea, añadiendo funcinalidades como pooling de instancias.

Ajax

Ajax (Asynchronous JavaScript And XML) es una técnica de desarrollo web para crear aplicaciones interactivas. Se ejecuta en el cliente y mantiene una conversación asíncrona en segundo plano con el servidor, permitiendo realizar acciones sin necesidad de recargar la página, lo que aumenta la interactividad, usabilidad y velocidad. Indicaremos si el framework integra Ajax o es posible su integración.

Otros

Configuración

Indicaremos el tipo de configuración (anotaciones, xml, ficheros properties…) y si es sencilla, cómoda y manejable.

Extensibilidad

La facilidad con la que el framework puede ser ampliado integrando nuevos módulos que doten de nuevas funcionalidades o modifiquen las ya existentes.

Madurez

Indica si el framework está suficientemente probado por los usuarios y ha demostrado ser sólido y efectivo.

Última versión

La última versión estable del framework, que es sobre la que se ha hecho la comparación

 

Curva de aprendizaje

La curva de aprendizaje es una gráfica en la que en el eje de abcisas y la producción en el eje de ordenadas y da una idea del tiempo que lleva a los usuarios ser capaces de desarrollar bajo el framework evaluado.

Documentación

Indicaremos la cantidad y calidad de documentación existente, ya sea oficial o no.

Los frameworks que se van a evaluar son:

Struts Spring Tapestry
Cocoon2 Stripes WebWork
Turbine Seam

Este y los siguientes artículos son fruto del trabajo personal y podrían contener algún error, cualquier corrección será bienvenida.

Share