Estructura
JSPWiki sigue el paradigma Modelo-Vista-Controlador:Modelo
Está manejado por la clase WikiEngine (motor wiki) y sus clases subsidiarias. A través del uso de diferentes objetos Gestores, maneja el almacenamiento de páginas (ver Proveedores de páginas), etc...Vista
Es manejada a través de varias páginas JSP, que son almacenadas en el directorio templates/ (plantillas/). Normalmente JSPWiki usa la plantilla por defecto, pero es posible cambiarla al realizar el despliegue.Controlador
Se maneja a través de varias páginas JSP personalizadas (Wiki.jsp, Edit.jsp, etc) que se encuentran en el directorio raíz. A diferencia de la mayor parte de frameworks (marcos) de aplicaciones, JSPWiki utiliza páginas JSP en lugar de servlets como el principal punto de entrada, debido a dos razones:
1.- Las páginas JSP permiten mayor flexibilidad: se puede cambiar la funcionalidad, los parámetros, etc... de tu instalación de JSPWiki muy fácilmente, sin tener que recompilarlo.
2.- Las páginas JSP son servlets. Es decir, se está ejecutando un sistema basado en servlets.
En mi opinión está bastante clara la estructura: el modelo almacena, la vista genera la página final, lo que ve el usuario y el controlador se encarga de llevar a cabo las acciones que le solicita el usuario (bueno, esto no es una sorpresa, en realidad es un resumen del patrón).
Por otro lado, hay 4 archivos ajuntos a la página que nos ayudarán a entrar un poco más a fondo en el diseño, aunque dada su antigüedad no hay muchas garantías de que sigan siendo del todo válidos. Estos archivos son: un diagrama con las clases más importantes y sus relaciones en pdf, un diagrama de clases, un diagrama de secuencia y un archivo jsp con una tabla en la que supone deberían listarse todos los archivos.
Aquí podemos ver el diagrama de clases:

Lo primero que llama la atención de este diagrama es la gran cantidad de relaciones que tienen las clases WikiEngine y WikiTagBase, tratándose en el primer caso de asociaciones y en el segundo de herencias (como su propio nombre indica, WikiTagBase es la clase base para etiquetas). Como se decía en la descripción general, la clase WikiEngine y sus clases subsidiarias de lo que se encargan es del modelo, dentro del patrón MVC.
Por su lado, la clase WikiTagBase y sus clases herederas se ocupan de generar las etiquetas html de la página que se presentarán al usuario, dicho de otra manera a la vista.
Ahora veamos el diagrama de secuencia:

Opino que resulta bastante claro. Se puede observar cómo, parte por parte, se va componiendo la respuesta html para ser finalmente enviada. Variables, link RSS, menús, etc, etc...
Y creo que hasta aquí ya es suficiente por hoy. Posteriormente realizaré un somero estudio del resto de wikis que se limitará a lo que de la documentación pueda extraer. A continuación comenzaré el proceso de aplicación de patrones de diseño.
¡Hasta la siguiente entrada!
1 comentario:
Hola Rober, gracias por tu esfuerzo en traducir. Ademas están interesantes tus opiniones. Creo que vale la pena esto de jspwiki. Te escribo mi correo por si talvez puedo ayudar en algo difer_t@hotm...
Publicar un comentario