
Asterisk Monitor 43
4.2.5 GUI
La implementación de la interfaz gráfica (GUI, del inglés Graphical User
Interface) se basa en la construcción de páginas HTML Se ha decidido utilizar
HTML principalmente por ser un lenguaje sencillo y requerir únicamente de un
navegador por parte del cliente para interpretar el código. Se podría haber
optado por otras tecnologías como JavaScript, XML o Applets de Java pero
estos lenguajes aumentarían la complejidad del sistema y requerirían una
mayor carga computacional
Las páginas HTML se caracterizan por ser estáticas lo que plantean un
problema a la hora de mostrar aquella información que varía dinámicamente.
Otro aspecto es cómo acceder a la información extraída de Asterisk a partir de
la API Asterisk-Java. Para ello la GUI se apoyará de la tecnología Freemarker
versión 2.3.6 [33], una librería Java diseñada para la generación de páginas
web HTML dinámicas a partir de una plantilla o template. Su uso es habitual en
aplicaciones basadas en servlets consiguiendo un modelo MVC (Model View
Controller)). La idea que hay bajo el concepto MVC consiste en la separación
de la programación del diseño, de manera que modificar la GUI no implique
tener que cambiar o recompilar la lógica del programa.
El objetivo de Freemarker es generar el texto que servirá los servlets a cada
petición HTTP. Este texto es obtenido mediante una plantilla escrita en código
HTML a la que se han añadido unas etiquetas especiales interpretables por
Freemarker. La función de estas etiquetas consiste en extraer el valor en ese
instante de un objeto Java en concreto consiguiendo ofrecer al servlet una
página HTML con información dinámica.
Fig. 4.1 Funcionalidad de Freemarker [33]
Como requisito para este funcionamiento es imprescindible que estos objetos
Java a los que Freemarker ha de acceder mantengan una estructura jerárquica
en forma de árbol. Esta estructura es implementada mediante una tabla de
Hash, una colección, una secuencia o cualquier combinación de estas. La
información contenida se debe representar mediante un objeto del tipo String,
Number, Date o Boolean. Una posible estructura de ejemplo sería la
siguiente [33]:
Kommentare zu diesen Handbüchern