Seleccionar página

WebWork es un framework opensource diseñado para ser conceptualmente simple, interoperable y sencillo de usar, proporcionando un soporte robusto para construir interfaces de usuario reusables.

Intenta reducir al mínimo la cantidad de código necesario para trabajar con el framework, permitiendo a los desarrolladores centrarse en la lógica de negocio y el modelado. En su versión 2.2 (año 2006), WebWork se fusionó con la comunidad Struts dando lugar a Struts Action Framework 2.0. Este framework maniene la filosofía de WebWork y se aprovecha de la gran comunidad de usuarios de Struts y de estar bajo el nombre de la fundación apache.

Modelo de programación

En el núcleo de WebWork se encuentra el API XWork. XWork es un framework basado en acciones y en los patrones de diseño Front Controller y Comman, centralizado entorno al interface Action, el cual deben implementar en forma de POJO las clases-acción que queramos que respondan a peticiones de la interfaz de usuario y devuelvan un resultado. El framework se encarga de manejar el ciclo de vida de las Actions y de proporcionar un contexto de acción en cada petición, a través del cual acceder a propiedades de la aplicación.

WebWork posee un fichero en el se mapean vistas y clases-acción. Los campos de las vistas son rellenados desde y hacia los campos de la acción (definidos como propiedades JavaBean) automáticamente. La clase-acción tiene además un método de validación que valida los datos introducidos y devuelve mensajes de error en caso de que los datos no sean correctos. Cuando la acción se ejecuta, devuelve un string indicando si la acción ha tenido éxito y así saber qué vista hay que mostrar. Además, las acciones se pueden encadenar unas detrás de otras, de forma que la primera recoge los valores de entrada, las de la cadena realizan procesamiento y la última decide qué vista mostrar, como una tubería.

Capas afectadas

Se centra en la capa de presentación y negocio

MVC push/pull

Permite usar ambos, Push y Pull.

Por un lado permite asociar páginas con clases-acción, pero también proporciona una serie de componentes reusables que pueden ser invocados desde cualquier página.

Internacionalizacion (i18n) y localización (L10n)

WebWork soporta internacionalización en dos lugares: Las etiquetas de la interfaz de usuario y los mensajes de validación, a través de ficheros de recursos (resource bundles). El interceptor i18n de WebWork se encarga de determinar el locale del cliente y elegir el archivo correspondiente.

Sistema de seguridad

No proporciona un sistema de seguridad.

Sistema de plantillas (templates)

A través de las librerías de etiquetas se pueden construir vistas según el patrón Composite View2 .

También puede configurarse para usar en la capa de presentación tecnologías como FreeMarker o JasperReports.

Sistema de validación

Proporciona un sistema de validación basado en XWork y dispone de una serie de validadores predefinidos y permite agregar validadores creados por el desarrollador.

Permite la validación en el servidor y/o en cliente usando Ajax o javascript simple.

Sistema de navegación (pageflow)

En el archivo de configuración principal se definen para cada acción una vista de entrada y una vista de salida a la que redirigir en caso de ejecutarse con éxito.

Sistema de caché

No proporciona un sistema de caché.

Testeabilidad

Al tener un diseño basado en POJOs los test de unidad son muy simples. Para testear interceptores proporciona una serie de Mocks que emulan el entorno.

También ofrece una serie de TestSuites por defecto que pueden ser un buen punto de partida para empezar.

Mapeo Objeto-Relacional (ORM)

No. Se centra en la capa de persentación-negocio. Sin embargo, se puede acoplar sin problemas con cualquier solución ORM.

Programación Orientada a Aspectos (AOP)

No proporciona las ventajas de la AOP por sí mismo, pero se detalla como configurar el framework para hacer uso de Spring.

Inyección de dependencias (DI)

WebWork viene con un contenedor de Inversion of Control integrado, sin embargo está en vías de desaparecer en futuras versiones y desde la documentación oficial se recomienda usar otros contenedores como Spring.

Ajax

WebWork ofrece características Ajax usando las librerías Dojo y DWR. Permite la validación en el cliente, formularios y links remotos entre otros.

Configuración

La configuración se centra en el archivo xwork.xml. Ahí se definen namespaces, interceptores, y el mapeo de nombre de acciones-clases.

Para aplicaciones grandes este archivo puede volverse inmanejable.

Extensibilidad

Sigue un diseño basado en POJOs que le permite acoplar en la capa de negocio casi cualquier otro framework.

Madurez

WebWork sigue el mismo diseño base que Struts, pero con una API mucho más simplificada. Este diseño ha sido más que probado y ha demostrado ser robusto y fiable.

Última versión

La última versión disponible es WebWork 2.2.6 y Struts 2.0.6

Curva de aprendizaje

Uno de los objetivos del diseño de WebWork es que su uso sea fácil e intuitivo para el desarrollador. Presenta una curva de aprendizaje muy suave.

Documentación

La documentación es muy completa y se encuentra bien organizada, cubriendo los tópicos y con ejemplos. También proporciona guía, referencia, FAQ, artículos, varios tutoriales, trozos de código, aportes de usuario….

 

Share