Introduccion

De WikiDgp21
Saltar a: navegación, buscar

Daps21 es un entorno de ejecución de aplicaciones cliente servidor en 3 capas: Servidor de Aplicaciones, Motor de Base de Datos y Aplicación cliente, que incorpora su propio entorno de desarrollo de aplicaciones. Es un sistema orientado al desarrollo rápido de aplicaciones de gestión, mediante el cual se ha desarrollado el ERP Iglobalgest. Es una herramienta ideal para la creación de programas utilizados en Cloud Computing, ya que incorporan multitenancy de base, generan un tráfico de datos ínfimo en comparación con programas web y da una mayor interactividad de la aplicación cliente con el usuario. Todos los componentes del sistema han sido escritos en lenguaje C y C++. El sistema y las aplicaciones desarrolladas tienen licencia libre AGPL.

El desarrolo en el entrono daps21 proporciona:

  • Desarrollo rápido.
  • Fácil mantenimiento.
  • Control de usuarios y grupos.
  • Configuración a nivel de usuario, grupo, empresa y sector.
  • Gestión documental para incrustar en cualquier formulario.
  • Mensajería instantanea.
  • Sistema para implementar la ayuda.
  • Multiidioma.


Componentes del sistema.

Escuchador (DESOR).

Es la puerta de entrada al sistema. Es el encargado de escuchar las peticiones de conexión de los usuarios. Gestiona una tabla de carga configurable de los diferentes servidores operativos del sistema daps21 y de las diferentes conexiones a internet que tiene asignadas. Cuando recibe una petición de conexión de un usuario, la redirige al servidor y a la línea de conexión con menos carga en el sistema.

A continuación se muestra un ejemplo de la tabla de carga de trabajo que gestiona el escuchador.

001serv1               gestio         l192.168.116.4       003748012000021
002serv1               gestio         r80.125.16.68        003748008500001
003serv1               program        l192.168.216.4       003748012000001
004serv1               program        l192.168.216.4       003748011000011
005serv5               demo           l192.168.216.5       013748012000021
006serv5               demo           r61.149.16.182       013748011000051

Esta tabla contiene información de los servidores que atienden al sistema. Por ejemplo, la línea 1 informa de lo siguiente:

001:	 	Número de orden.
serv1:	 	Nombre del servidor.
gestio:    	Grupo de usuarios al cual atenderá.
l:	 	Admite conexiones locales.
192.168.116.4:	ip de conexión.
3748:	 	Puerto de conexión.
120: 		Número de usuarios máximo para el servidor.
2: 		Número de usuarios conectados
1: 		Servidor activo


Funcionamiento:

La tabla de carga de trabajo (dgpsap) la crea el escuchador al arrancar a partir de un fichero de configuración en texto plano (dgpsap.cfg). Cuando arranca un servidor de aplicaciones se activa su estado en la tabla de carga a fin y efecto de que el escuchador lo tenga en cuenta para gestionar el balanceo. Si el servidor de aplicaciones no se encuentra en la misma máquina que el escuchador, la activación se realiza mediante un mensaje remoto al escuchador. Cuando una aplicación cliente pide una conexión al escuchador, este busca la mejor opción en función del grupo de usuarios al cual pertenece, del tipo de conexión, local o remota, y según la carga relativa de cada servidor, devolviendo a la aplicación cliente la nueva ip y el nuevo puerto de conexión. Las figuras siguientes ilustran estos conceptos.

Escalabilidad sistema Daps21
Escalabilidad en comunicaciones de Daps21

Servidor de aplicaciones daps21.

Es el encargado de ejecutar las aplicaciones almacenadas en la base de datos de programación, interaccionar con la base de datos del usuario y atender el diálogo con la aplicación cliente. Ha sido desarrollado partiendo de cero en lenguaje C.


Código de las aplicaciones almacenadas en la base de datos.

El servidor de aplicaciones trabaja con dos bases de datos diferenciadas:

Base de datos del usuario. Base de datos de programación.

Base de datos del usuario.

Como su nombre indica, es la que gestiona los datos introducidos por el usuario con la aplicación. También contiene información que utiliza el servidor de aplicaciones para personalizar las aplicaciones a diferentes niveles: Por sector (alimentación, construcción, téxtil, transporte, etc), por empresa o base de datos, por perfil de usuario y por usuario.

Base de datos de programación.

En la base de datos de programación se guardan las definiciones de los formularios de la aplicación y el código que ha de ejecutar el servidor de aplicaciones. Un formulario se compone de un conjunto de controles. El código que ejecuta el servidor de aplicaciones siempre está asociado a un control de un formulario. Este código se ejecutará cuando el formulario sea mostrado por la aplicación cliente y el usuario clique el control si es un control clicable, o sinó, cuando el control pierda el foco. El código a ejecutar por el servidor se compone de una o más funciones que se ejecutarán de forma secuencial o bien siguiendo el flujo especificado en lenguaje LCF (Lenguaje de Control de Funciones).


Módulo de acceso a la base de datos.

Para acceder a la base de datos del servidor de aplicaciones daps21 se ha hecho un módulo diferenciado. Este módulo es el encargado de hacer el enlace con la interficie de programación proporcionada por el motor de base de datos. Esto se ha hecho así para facilitar la portabilidad del servidor de aplicaciones a diferentes sistemas gestores de bases de datos (ver figura 1). Para que las aplicaciones desarrolladas en el sistema daps21 funcionen con otro gestor de base de datos sólo hace falta desarrollar el módulo de acceso específico. Todo el código de las aplicaciones desarrolladas se puede aprovechar. El módulo de acceso a datos que hemos desarrollado actualmente es para Postgresql [1].


IDE integrado.

La misma aplicación sirve para desarrollarse a si misma. Para ello sólo necesitamos conectarnos a la base de datos de programación y acceder al formulario que permite la creación de nuevos formularios y la programación del código.


Protocolo de comunicaciones entre cliente y servidor.

El protocolo de comunicaciones entre la aplicación servidora y la aplicación cliente tiene básicamente la siguiente estructura:

Formulario: Referencia Idioma Versión Vector con los datos que contienen los controles del formulario Control que ha originado el retorno al servidor

El paquete de datos que viaja de cliente a servidor y viceversa es encriptado en el origen y desencriptado en el destino.


Visión general del funcionamiento.

Cuando el usuario abre la aplicación cliente en su ordenador, lo primero que hace es mostrar el formulario de conexión, donde introducirá los siguientes datos:

Identificación del usuario Contraseña Base de datos del usuario Idioma Aceso remoto o local

Esta información, convenientemente encriptada con una clave, llegará al escuchador que la desencriptará, y de acuerdo con el mecanismo de balanceo de carga entre servidores y entre líneas de comunicación expuesto en el apartado 3.1, indicará a la aplicación cliente a que servidor de aplicaciones ha de conectarse y a través de que ip. La aplicación cliente iniciará la nueva conexión, el servidor abrirá una sesión en la base de datos para este cliente y se iniciará el diálogo entre servidor de aplicaciones y aplicación cliente.


Diálogo entre aplicación servidora y aplicación cliente.

A continuación mostramos el diálogo típico entre aplicación servidora y aplicación cliente a partir del establecimiento de la conexión.

A.S.: Aplicación servidora. A.C.: Aplicación cliente.

A.S: Envía un paquete de datos al cliente según el protocolo de comunicaciones citado.

A.C.: Recibe el paquete de datos. Lee la definición del formulario en el fichero de pantallas local y procede a construir la pantalla que verá el usuario. Si la aplicación cliente no tiene guardado el formulario, bien porqué es nuevo, bien porqué tiene una versión obsoleta, solicita al servidor el envío de la definición del formulario que actualiza en su fichero de pantallas y después procede a construir la pantalla y llenar los controles con los datos suministrados por el servidor en el vector de datos.

En este momento el control de la aplicación está en la parte cliente: el usuario introduce datos en los diferentes controles del formulario. Cuando el usuario clica un botón o sale de un control que tiene la propiedad de “retornar control al servidor”, la aplicación cliente prepara el paquete para enviar al servidor con los datos de los controles del formulario así como la información sobre qué control ha sido el que ha originado la transferencia al servidor.

A.S.: Recibe el paquete del cliente, carga los datos de los diferentes controles del formulario a su área de memoria, ejecuta el código asociado al control que ha originado la llamada y responde al cliente indicando otra vez un formulario que podrá ser el mismo u otro en función del código ejecutado, juntamente con el vector de datos actualizado.

Este diálogo acabará cuando el usuario cierre la aplicación cliente. El servidor por su parte cerrará la sesión de la base de datos, recalculará la carga y actualizará el fichero dgpsap.


Aplicación cliente.

Tiene como misión dibujar la interficie que ve el usuario, interactuar con este y enviar y recibir la información al servidor. La aplicación cliente desarrollada hasta ahora funciona para Windows. También se puede ejecutar en Linux usando Wine. La aplicación cliente no contiene ninguna lógica de negocio, de esta forma podremos desarrollar otra aplicación cliente que corra en otra plataforma sin comprometer las aplicaciones ya desarrolladas. Está escrita en lenguaje C++ . Para su desarrollo se partió de un modelo de programación de aplicaciones Windows creado por Bartosz Milewski. Esto nos ha permitido utilizar un modelo orientado a objetos sin la necesidad de usar librerías comerciales como las MFC de Microsoft. La aplicación cliente no necesita ningún proceso de instalación, incluso se puede ejecutar desde un dispositivo de memoria USB conectado a cualquier ordenador con conexión a Internet. La aplicación cliente crea los formularios en la pantalla del usuario invocando directamente las API's nativas de Windows, siguiendo las instrucciones enviadas por el servidor. Existe un mecanismo caché que guarda la información necesaria para crear las pantallas en local, de forma que la aplicación cliente recuerda como ha de pintar una pantalla y por lo tanto esta información no ha de ser transferida a menos que haya habido cambios. Este mecanismo reduce considerablemente el volumen de datos que viaja por la red. La aplicación cliente se encarga de encriptar los datos enviados al servidor y de desencriptar los recibidos antes de mostrárselos al usuario.

Funcionalidad de las aplicaciones Dgp21.

Soporte multidioma.

Una aplicación daps21 puede trabajar simultáneamente con diferentes idiomas. Cada usuario indica con que idioma quiere trabajar en la pantalla de conexión al sistema. El servidor de aplicaciones se encargará de mostrar los formularios, las páginas de ayuda, los “tooltips” de los controles y los mensajes de la aplicación en el idioma que ha seleccionado. El sistema proporciona las herramientas necesarias a nivel de usuario para traducir los textos de la aplicación.


Mecanismos de personalización.

El entorno proporciona mecanismos de personalización de las aplicaciones que no se pierden con las actualizaciones. Estos mecanismos actúan por niveles de preferencia de más particular a más general. Los niveles de personalización son:

usuario Perfil o grupo de usuarios Sector Empresa

Estos mecanismos permiten:

Activar comportamientos diferentes de la aplicación. Establecer valores por defecto. Restringir el acceso a menús de la aplicación. Aplicar restricciones a nivel de control de formulario, permitiendo deshabilitar u ocultar campos o controles. Aplicar todo lo anterior en función del tipo de usuario y de acceso a la aplicación: local o remota.


Ayuda.

La ayuda de la aplicación la invoca el usuario pulsando el botón “Ayuda” presente en los formularios. La ayuda está en formato html y se puede configurar para que acceda a las páginas de forma local, servidor de red o internet. La aplicación cliente se encarga de resolver la página a mostrar en función del idioma de conexión.


Mensajería instantánea.

El entorno proporciona un sistema de mensajería instantánea y diferida al servicio de los usuarios de la aplicación y que ofrece la funcionalidad de programación de alarmas a las aplicaciones desarrolladas.


Gestión documental.

El entorno proporciona una serie de funciones que permiten a las aplicaciones desarrolladas trabajar con documentos en cualquier formato. Estos documentos están almacenados en el servidor, encriptados, en una carpeta de acceso restringido a los usuarios. Estos documentos se pueden vincular a las aplicaciones desarrolladas. Cuando un documento es requerido por un usuario a través de la aplicación, el servidor lo envía al cliente, el cual se encarga de desencriptarlo y almacenarlo localmente, para que el usuario trabaje con el. Una vez finalizadas las modificaciones, el documento vuelve a ser encriptado y enviado al servidor.


Generador de impresos.

Para generar impresos sofisticados tipo albaranes, facturas, etc, se ha utilizado el paquete jfreereports. Este generador trabaja con una definición de informe guardada en formato xml. Estas definiciones se guardan en el servidor como un documento más de la gestión documental. Se ha creado un módulo en la aplicación cliente encargado de hacer el enlace con este paquete y generar los informes.