4. Diseño
4.1. Arquitectura del sistema
En el siguiente apartado se va a mostrar el diseño de la arquitectura del sistema, en el cuál se puede apreciar que se ha desarrollado un sistema separado en servidor y cliente. La parte del servidor será implementada mediante la tecnología .NET, mientras que la parte del cliente será a través de Android.
Como se puede apreciar en la figura siguiente, en el sistema creado se puede apreciar varios componentes. En un primer lugar, se observa una arquitectura Cliente- Servidor. La parte del cliente será toda aquella que será usada por cualquier tipo de usuario final, que en este caso serán las distintas aplicaciones Android. En el caso contrario, el servidor será el resto de componentes, es decir, serán los módulos correspondientes al servicio web y la base de datos en la cuál se almacena toda la información concerniente a los usuarios y la información almacenada de la biblioteca.
En cuánto a la parte del Cliente, tenemos que apreciar que esta diferenciada en dos subcomponentes distintos, que se corresponden con cada una de las aplicaciones distintas que pueden manejar los usuarios.
El apartado concerniente al Servidor se refiere a otros dos subcomponentes tales como el servicio web que se usará como puente entre las aplicaciones Android y la base de datos, a través de mecanismos como SOAP.
Más adelante se explican con más detalle cada uno de los módulos que compone esta arquitectura, así como la relación existente entre ellos. A continuación se aprecia un diagrama que muestra cada uno de los componentes que compone la arquitectura del sistema.
102
Ilustración 11: Arquitectura del sistema
El sistema creado, a parte de usar una arquitectura Cliente-Servidor se basará a su vez en el patrón arquitectónico Modelo Vista Controlado (MVC), debido a que como se ha visto anteriormente, el sistema tiene dos partes diferenciadas que son el modelo Cliente-Servidor, en la cuál se puede integrar internamente el patrón MVC.
Para aclarar dudas que puedan surgir sobre cada uno de los dos modelos arquitectónicos, a continuación se procede a explicar cada uno de ellos, con el objetivo de aclarar dudas sobre el funcionamiento del sistema.
103
4.1.1. Modelo Vista Controlador (MVC)
El Modelo Vista Controlador es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario (GUI), y la lógica de negocio en tres componentes distintos. El patrón MVC, se aprecia frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la lógica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista.
Ilustración 12: Arquitectura MVC
De una forma más simple, se puede el patrón MVC como un patrón arquitectural que describe una forma de desarrollar aplicaciones software separando los componentes en tres grupos, los cuales explicamos a continuación:
Modelo: es la representación específica de la información con la cual el sistema opera. En resumen, el modelo se limita a lo relativo de la vista y su controlador facilitando las presentaciones visuales complejas. El sistema también puede operar con más datos no relativos a la presentación, haciendo uso integrado de otras lógicas de negocio y de datos afines con el sistema modelado. Vista: presenta el modelo en un formato adecuado para interactuar, usualmente
la interfaz de usuario (GUI).
Controlador: responde a eventos, usualmente acciones del usuario, e invoca peticiones al modelo y, probablemente a la vista.
104 4.1.2. Modelo Cliente-Servidor
Es un modelo en el cual las tareas se reparten entre los servidores y los llamados clientes. Un cliente realiza peticiones a otro programa y el servidor es el que se encarga de enviarle la respuesta. Esta idea también se puede aplicar a programas que se ejecutan sobre un solo ordenador, aunque es más ventajosa en un sistema operativo multiusuario distribuido a través de una red.
En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.
Ilustración 13: Arquitectura Cliente-Servidor
Cliente: maneja todas las funciones relacionadas con la manipulación y despliegue de datos, por lo que están desarrollados sobre plataformas que permiten construir interfaces gráficas de usuario (GUI), además de acceder a los servicios distribuidos en cualquier parte de una red.
Servidor: es el proceso encargado de atender a múltiples clientes que hacen peticiones de algún recurso administrado por él. Al proceso servidor se le conoce con el término back-end. Normalmente el servidor maneja todas las funciones relacionadas con la mayoría de las reglas del negocio y los recursos de datos.
105
El sistema se puede apreciar, que se comporta como un Cliente-Servidor debido a que es un sistema distribuido en cual los clientes realizan peticiones mediante SOAP en los dispositivos móviles Android, mientras que la parte del servidor es el servicio web junto con la base de datos que reciben peticiones a través de los dispositivos móviles y les devuelven respuestas con la información solicitada por los dispositivos.
El sistema final se compone de un servidor que almacena los datos y gestiona las peticiones y de dos tipos de aplicaciones cliente, una para el administrador de la biblioteca y otra para los múltiples usuarios finales, que son los que necesitarán realizar peticiones al servidor con el fin de obtener unos datos.
En cuanto a la arquitectura MVC el sistema nos indica que la parte de la Vista serán los dispositivos móviles, que en este caso son los múltiples clientes Android. Por el contrario, la parte del Servidor contiene al Controlador que será el Servicio Web que se encarga de realizar todas las peticiones y respuestas entre la base de datos y los clientes, y al Modelo que va a ser la base de datos que almacena la información privada de los usuarios, así como la de la biblioteca.
Por lo tanto podemos apreciar que la arquitectura del sistema es un Modelo Vista Controlador modificado, debido a que el cliente no tiene permitido acceder al Modelo directamente por cuestiones de seguridad, por lo que obligatoriamente tendrá que acceder al Modelo, a través del Controlador. La decisión de usar un Modelo Vista Controlador modificado, en lugar del tradicional es como se ha visto por cuestiones seguridad principalmente.
Debido a esta decisión, se han creado un conjunto de funciones en el Controlador capaces de gestionar las peticiones que la Vista le realiza para obtener datos del Modelo.
106
Según el diagrama mostrado anteriormente, los pasos a seguir para poder enviar peticiones al servidor y obtener así respuestas son los que se muestran a continuación:
El usuario desde una de las aplicaciones móviles (Vista) envía una petición al servicio Web.
La aplicación crea una solicitud HTTP y la envía a la URL donde está alojado el servidor, encapsulada en una petición SOAP.
La petición SOAP llega al Servicio Web (Controlador) que la gestiona y dependiendo del tipo de petición, hace una consulta a la base de datos (Modelo). El servidor crea una respuesta HTTP que incluye la respuesta SOAP del Servicio
Web, enviándolo a la dirección desde la que recibió la petición, que en este caso es el dispositivo móvil que envió la petición SOAP.
En el dispositivo móvil se recibe la respuesta del servidor, decodificándola y procesando los datos obtenidos.
El dispositivo muestra los datos recibidos.