jueves, 16 de julio de 2009

Aplicación cliente WebooksFX

En entradas anteriores (Servicio Web Webooks) explicamos la implementación del servicio web en php para la consulta de libros. Hoy vamos a explicar la aplicación cliente desarrollada en JavaFx.

La aplicación utiliza el patrón MVC con el fin de desacoplar la Vista del resto de las capas. Esto fue pensado así, debido a que JavaFX no es un 100% portable entre diferentes plataformas. Ciertos objetos del set de librerías no son compatibles en todas las plataformas, siendo la de Escritorio la que más cantidad de estos tiene. De manera que al utilizar este patrón, intentamos minimizar dicho problema problema, teniendo que reescribir solo las partes de la vista que necesitemos para la nueva plataforma.

En base a lo anterior, decidimos dividir la implementación en dos aplicaciones:
  • WebooksFX
  • WebooksFX_Desktop
La primera contiene el set de clases de las capas de Modelo y Controladora, y las clases abstractas de la Vista.

La segunda compone todo el set de clases correspondientes a la implementación de la Vista para una aplicación de escritorio. Todas estas heredan parte de su lógica de la Vista abstracta definida en WebooksFX.

En caso de necesitar desarrollar la aplicación para otra plataforma, tendríamos que crear una aplicación nueva, utilizando las librerías de WebooksFX, implementando la Vista Abstracta.

Puedes descargar el código de la aplicación desde el svn:
http://webooks.googlecode.com/svn/trunk/
Las aplicaciones fueron realizadas con la versión 1.1 de la SDK de JavaFX. No es compatible con la actual versión 1.2

Arquitectura de la aplicación


VISTA

Dentro de la vista se encuentran los componentes visuales. Estos permiten que la aplicación interactue con el usuario. Esta capa no contiene lógica de negocio, solo contiene los componentes visuales, y métodos para alterar sus estados. La lógica es manejada por la controladora.
CARGANDO
Esta es la pantalla que se muestra al comienzo de la aplicación, y es la encargada de mostrar un mensaje de espera mientras se establece la conexión con el servidor para obtener los servicios disponibles, contra los cuales la aplicación podrá interactuar más tarde. El resto de las pantallas se encuentran ocultas, de manera de dar un efecto de transparencia, para que solo sea visible la imagen del logo.
BÚSQUEDA
Esta pantalla es la que contiene las opciones para que el usuario pueda realizar una búsqueda de libros. Dentro de esta pantalla podemos encontrar: la barra de búsqueda, los resultados, y el paginador de resultados. La barra de búsqueda nos permite ingresar un texto como parámetro de búsqueda. También posee opciones de configuración avanzadas, permitiendo filtrar por un criterio en particular, y seleccionar dentro de los servicios disponibles, cual de los motores de búsqueda utilizar. Una vez que se realize una búsqueda, se muestra una ventana de carga para indicar que la petición ha sido enviada, y se está procesando. Cuando el procesamiento haya terminado, la ventana de carga desaparece, y se generan varios elementos gráficos, conteniendo los resultados de la petición. A partir de este punto se puede realizar otra petición de búsqueda, o acceder al detalle de un libro. En el primer caso, se repite el proceso anterior. En el segundo, se vuelve a mostrar la ventana de carga, y se envía una petición para obtener el detalle de un libro.
DETALLE
Esta pantalla refleja todos los datos detallados de un libro en particular (Imagen, nombre, autor, editorial, sinopsis, cantidad de páginas).

CONTROLADORA

La controladora es la encargada de procesar las acciones iniciadas en la vista, y desencadenar un evento para las mismas, ya sea, derivando el proceso al modelo, y/o modificando el estado de la vista. Por cada vista implementada, hay una controladora, de manera que en el proyecto existen 3 controladoras: ControladoraVista, ControladoraModelo y ControladoraDetalle. A su vez, algunas controladoras pueden derivar el proceso ellas.
Las controladoras también atienden la respuesta que el modelo haya procesado, alterando el estado de la vista en base al resultado obtenido.

MODELO

Capa que contiene el modelo de negocio. En el caso de la aplicación WebooksFX, es la que se encarga de realizar las peticiones al Servicio Web Webooks, y parsear la respuesta obtenida, devolviendo objetos de tipo: Libro, Servicio, o ColeccionLibros.

1 comentario: