DOCUMENTO DE ARQUITECTURA DE REFERENCIA PARA APLICACIONES WEB GESTIÓN INFORMÁTICA UNIVERSIDAD DE ANTIOQUIA Este documento se estructura teniendo en cuenta las recomendaciones del artículo de IBM “Reference Architecture: The best of best practices” http://www.ibm.com/developerworks/rational/library/2774.html puede encontrarse también en Alfresco: Company Home > Sistemas > ArquitecturaDeSoftware. Capas de la arquitectura de referencia El documento de referencia está dividido en las siguientes capas: Capa de Interfaz de usuario: estándares y herramientas para soportar la interfaz de usuario y/o los servicios de presentación. (p.e: html, interfaces de usuario enriquecidas). Capa de negocio: estándares y herramientas para soportar la lógica de negocio. (p.e: lenguajes, estándares de componentes). Capa media: estándares y herramientas para soportar la gestión de transacciones y la comunicación entre procesos. (p.e: servidores de aplicaciones, APIs de IPC). Capa de software de sistema: estándares y herramientas para soportar la gestión de sistemas. (p.e: sistemas operativos y sistemas de gestión de bases de datos). A continuación se detalla cada una de las capas: Capa de interfaz de usuario Área Estilos y usabilidad Productos/servicios/componentes Ver el documento “Estandarización de línea grafica.doc” que se encuentra en alfresco Company Home > Sistemas > FormatosyEstandares. Este documento define los estándares de línea gráfica que deben seguirse para el desarrollo de aplicaciones web. Herramientas de construcción Lenguajes 1. Para aplicaciones nuevas web se debe usar JSF 1.2 y Icefaces 1.8. Para creación de reportes se debe usar JasperReports 3.7.4 2. Para aplicaciones preexistentes en lenguaje PHP 5, el mantenimiento se debe realizar con el mismo lenguaje y versión. Entorno de 1. Se debe usar el IDE Netbeans 6.5.1, e incluir el plugin para generar desarrollo (IDE) Estrategias diseño Seguridad proyectos usando la plantilla básica de aplicaciones web. Ver documento “ManualPlantilla.doc” que se puede encontrar en Alfresco Company Home > Sistemas > ArquitecturaDeSoftware, el cual explica la forma de instalación y el uso de este plugin. Se deben incluir los plugins: jasperserver-plugin-3.7.4.nbm, iReport3.7.4.nbm, Facelets support, ICEfaces run-time libraries versión 1.8.2.2 2. Para php: Dado que en PHP se hacen solo modificaciones a aplicaciones existentes, debe utilizarse lo que actualmente se tiene. de Para aplicaciones en Java, se debe implementar el patrón de diseño MVC, el cual se apoya en JSF 1.2 y Icefaces 1.8 para las capas de Vista y Controlador. Como aplicación de referencia puede consultarse el proyecto ejemploPlantilla que se encuentra en la raíz del CVS instalado en sikuani. Toda página que use datos personales del usuario debe utilizar el protocolo https y por ende todos los componentes usados en esta, con el fin de no generar en el navegador del usuario alertas de seguridad. La Universidad dispone de certificado de seguridad válido en su servidor de aplicaciones de producción y de un certificado no válido en pruebas. Componentes 1. Presentación de Para la presentación de errores al usuario se debe usar el estándar de JSF errores al 1.2 usuario Capa de negocio Área Componentes 1. Lenguajes Productos/servicios/componentes 1. Java (máximo 1.5.018) 2. PHP 5 para mantenimiento de aplicativos hechos en este lenguaje. 2. Entorno de Se debe usar el IDE Netbeans 6.5.1 desarrollo (IDE) Uso de patrones Patrón DAO Patrón recomendado por J2EE http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObj ect.html para acceso a datos. Este patrón aplica tanto para aplicaciones Java como para aplicaciones PHP. Patrón Factory Patrón recomendado por J2EE para complementar el patrón DAO. Este patrón se usa para dar la posibilidad de acceder a los datos a través Hibernate o JDBC. La configuración del acceso debe hacerse a través de DataSource, por ende la aplicación no debe almacenar contraseñas de acceso a base de datos. La url de referencia es la misma que para el patrón DAO. Este patrón aplica tanto para aplicaciones Java como para aplicaciones PHP. Patrón DTO Patrón recomendado por J2EE http://java.sun.com/blueprints/corej2eepatterns/Patterns/TransferObject. html para transferencia de datos. Este patrón se usa transversal a toda la aplicación. Este patrón aplica tanto para aplicaciones Java como para aplicaciones PHP. Componentes de servicio 1. Seguridad Para aplicaciones java, utilizar el OID institucional para la autenticación y el MUA (Módulo Único de Autorización) para la autorización a través de un filtro de seguridad proveído por la institución. 1. Manejo de logs Log4j versión 1.2.9. En el archivo de propiedades log4j.properties incluido en el proyecto de referencia se detallan los parámetros que se deben configurar para el uso de la librería log4j. Los llamados a la librería pueden ser mediante un método que existe en el backing bean común que se llama redirectError o mediante un llamado directo al servicio de registro de log de la librería log4j. 2. Lógica de La lógica de negocio se debe manejar a través de clases dentro del paquete negocio “bl” (business logic). 3. Servicios web Las clases clientes de servicios web, deben ubicarse dentro del paquete “bl”. Para el consumo de servicios web proveídos por la institución se debe usar la librería OrgSistemasSecurity.jar tal como se indica en el manual “Para consumir servicios web UdeA. docx“ 4. Enrutamiento de Esto es gestionado por IceFaces y JSF 1.2. peticiones desde la interfaz de usuario hacia la lógica de negocio 5. Filtros Cualquier filtro necesario en la aplicación, deberá ubicarse en el paquete “flt”. Componentes de acceso a datos 1. Procedimientos Con el fin de hacer más segura la aplicación y sus transacciones, todas las almacenados operaciones (consulta, actualización, creación y eliminación) sobre la base de datos deben realizarse a través de procedimientos almacenados y funciones. El usuario con el cual se accede a la base de datos debe ser diferente al dueño del esquema, normalmente debe llamarse consultaXXXXX donde XXXXX es el nombre del sistema (P.E. consultaReune, consultaMares, etc.). A dicho usuario se le deben otorgar los permisos necesarios para la ejecución de los procedimientos y funciones creados. 2. Tipos de acceso 1. Utilizar Hibernate 3.0 cuando la aplicación no requiera ejecutar un alto a datos contenido de consultas. 2. Utilizar JDBC en caso contrario. De acuerdo con las condiciones de la aplicación, puede darse una combinación de ambos tipos de acceso. Esta decisión se toma durante la etapa de diseño de la aplicación. La configuración del acceso debe hacerse a través de DataSource, por ende la aplicación no debe almacenar contraseñas de acceso a base de datos. Capa media Área Servidores aplicaciones Servicios directorio Productos/servicios/componentes de Para aplicaciones web Java, Oracle Application Server 10.1.3.5 de Oracle Internet Directory (OID). Capa de software de sistema Área Sistemas operativos SGBD Productos/servicios/componentes Estaciones para desarrollo: Microsoft Windows 7 y posteriores. Oracle 10g Ambientes: desarrollo, pruebas y producción – Diagrama general del estándar de arquitectura para desarrollo de aplicaciones web en java