Download - Curso Arquitectura J2 Ee Parte1
ARQUITECTURA Y DISEÑO DE APLICACIONES J2EE
Andrés [email protected]
Objetivos del curso
● Formar para diseñar los sistemas a nivel corporativo● Utilizar J2EE para implantar sistemas multicapa● Aprender a utilizar las tecnologías J2EE para
mejorar la calidad de servicio de los sistemas corporativos
Conceptos básicos
● ¿Qué es arquitectura y qué es diseño?● Arquitectura:
– Cubre toda la estructura de un sistema
– Escalabilidad, seguridad, portabilidad, rendimiento, fiabilidad, flexibilidad
– Los detalles de implementación están ocultos
● Diseño:– Opera a un nivel de abstracción más bajo
– Trata sobre los detalles de implementación
Problemas de los arquitectos
● Tiempo● Coste● Experiencia● Habilidades● Visibilidad● Complejidad● Cambios
LA PRISA MATA
Fases en el desarrollo SW
● Análisis de requisitos / Alcance del problema– HW, SW, topología de la red, desarrollo, testeo,
entorno de producción
– Generar el modelo de dominio: clases, objetos e interacciones
● Análisis OO/Arquitectura– UML
● Diseño de la arquitectura– Framework, protocolos
● Implementación
Principios de arquitectura
“Divide y vencerás”Julio César
“Vamos por partes”Jack “El destripador”
Principios de arquitectura - Capas
● Las capas (layers) es una división lógica de los elementos que componen una solución SW
Principios de arquitectura - Niveles
● Es una división física de la infraestructura de un sistema
Características en la arquitectura
● Disponibilidad– Grado de accesibilidad de un sistema (ej: 24x7)
– Relacionado con el rendimiento
● Fiabilidad– Garantizar la integridad y consistencia de una
aplicación y sus transacciones
● Gestionabilidad– Gestionar los recursos de un sistema para garantizar la
disponibilidad y el rendimiento respecto a otros factores (plugins)
Características en la arquitectura
● Flexibilidad– Acometer cambios en la configuración de la
arquitectura y el HW sin un gran impacto en el sistema
● Rendimiento– Cumplir las funcionalidades en un tiempo
razonable
● Capacidad– Habilidad de un sistema para realizar múltiples
tareas por unidad de tiempo
Características en la arquitectura
● Escalabilidad– Capacidad de que ante incrementos de
transacciones el sistema cumpla con los requisitos de rendimiento y disponibilidad
● Extensibilidad– Capacidad de extender la funcionalidad
● Validez– Capacidad para predecir o confirmar resultados
en función de determinadas entradas de usuario
Características en la arquitectura
● Reusabilidad– Poder utilizar un componente en más de un contexto
sin modificarlo internamente
● Seguridad– Garantizar la accesibilidad e integridad de la
información de acuerdo a la política de la empresa
J2EE - Introducción
● Define un modelo para desarrollar aplicaciones distribuidas
● Basado en un modelo multicapa● Define un conjunto de componentes que pueden
reutilizarse● Destinado para estandarizar y simplificar el
desarrollo de aplicaciones distribuidas● La utilización de componentes es flexible
Desarrollo de aplicaciones corporativas J2EE - Retos
● Productividad– Equipos de desarrollo con medios de estándar
– Evitar soluciones específicas y arquitecturas propietarias
– Facilitar la división del trabajo
● Integración con sistemas existentes– Legacy systems (CICS, DB2, Mainframes, ...)
Desarrollo de aplicaciones corporativas J2EE - Retos
● Libertad de elección de herramientas, componentes (Websphere, Weblogic, Jboss, etc)
● Respuesta a la demanda– Disponibilidad, flexibilidad, escalabilidad
– Evitar la necesidad de rediseño, recodificación para conseguir lo anterior
● Mantenimiento de la seguridad– Conseguir un modelo de seguridad integrado en
entornos heterogéneos
Plataforma J2EE
Plataforma J2EE
● Modelo de aplicación distribuida multicapa– Capa cliente (navegador)
– Capa de presentación (servlets, JSP)
– Capa de lógica de negocio (EJBs)
– Capa de datos (BD)
Plataforma J2EE● Gestión de componentes basados en contenedor
– Los contenedores son entornos de ejecución estándares que proveen servicios específicos a componentes
– Por ejemplo: El contenedor web proporciona respuestas a peticiones de clientes (invocando un JSP o servlet)
– Proporcionan selección de comportamiento en tiempo de despliegue
– Los contenedores pueden convivir o no en una misma plataforma
Plataforma J2EE
● Soporte para componentes de cliente– Páginas HTML estáticas
– HTML generado dinámicamente JSP
– Java applets
– Aplicaciones autónomas (stand-alone) Java o no
– Comunicación con el middle tier por medio de HTTP, HTML, XML
Plataforma J2EE
● Soporte para componentes de negocio– EJB (Enterprise Java Beans)
– Permite a los desarrolladores concentrarse en la lógica de negocio delegando las complejidades de las transacciones al contenedor
Contenidos de una aplicación J2EE
Ventajas de la plataforma J2EE
● Desarrollo y arquitectura más simples– Funcionalidad más fácil de implementar
– Permite especificar comportamientos en tiempo de despliegue
– Permite la división del trabajo
● Integración con los sistemas de información corporativos
– JDBC, JTA, JNDI, JMS, JavaMail, JAXP, CORBA
Ventajas de la plataforma J2EE
● Múltiples servidores, herramientas, componentes
– Servidores: Glashfish, Websphere, Weblogic,...
– Herramientas: Netbeans, Eclipse, Websphere,...
– Frameworks: Struts, Spring, Hibernate,...
● Fácil escalabilidad– Los contenedores implementan mecanismos para
la escalabilidad de aplicaciones distribuidas
Ventajas de la plataforma J2EE
● Modelo de seguridad unificado y simplificado– Tanto en los contenedores Web como de EJB la
seguridad puede definirse en los ficheros descriptores de despliegue (flexibilidad)
Modelos de aplicaciones J2EE
● La arquitectura J2EE es flexible permite la elección de los contenedores a utilizar en cada caso
Modelo de aplicación multicapa
Modelo de aplicación centrada en la Web
CAPA DE CLIENTE
J2EE – Capa de cliente
● Desde el punto de vista del usuario el cliente es la aplicación
● Debe ser útil, usable, rápida● Dependiendo del tipo de cliente a utilizar hay una
serie de consideraciones a tener en cuenta
Capa de cliente - Consideraciones
● Consideraciones de la red– Diferentes tipos de conexión
– Latencia
– Ancho de banda
– La red no siempre es fiable
– El cliente ideal se conecta con el servidor sólo lo necesario, transmite la información necesaria y funciona razonablemente bien cuando no puede conectarse
Capa de cliente - Consideraciones● Consideraciones de seguridad
– Cuando existe un cortafuegos se limita la elección de los protocolos (HTTP, HTTPS) para la comunicación
– Tipo de red: Internet, Intranet → Afecta a la autenticación
Capa de cliente - Consideraciones
● Consideraciones de la plataforma cliente– Tipo de terminal en el que se visualizará
– Periféricos: Tamaño de la pantalla, ratón, teclado
– Complejidad de las aplicaciones multiplataforma
Capa de cliente – Directrices generales de diseño
● Aunque la plataforma J2EE recomienda el uso de clientes ligeros la capa cliente puede realizar las siguientes funciones:
– Presentación del interfaz de usuario
– Validar las entradas del usuario
– Comunicarse con el servidor
– Gestionar el estado de la conversación
● Cuantas más funciones tenga la capa de cliente mayor rapidez de respuesta → RIA
Directrices de diseño para navegadores
● Ventajas de la utilización de navegadores:– Son los clientes más ligeros
– No están afectados por los cambios de la aplicación
– Están en todas partes: Pcs, Móviles, Estaciones de trabajo
Directrices de diseño para navegadores
● Presentación del interfaz de usuario– Descargan los documentos del servidor
– HTML, XML
– Son estáticos o generados dinámicamente (JSP, servlets)
– Los navegadores ofrecen un entorno familiar al usuario
– Pero ofrecen una limitada interactividad-> requiere muchas conexiones con el servidor
– Javascript
Directrices de diseño para navegadores
● Validación de las entradas del usuario– Utilizar Javascript (ECMA) para la validación de los
campos del formulario
– El código de Javascript común debe estar incluido en un fichero-> el navegador lo guarda en la caché
– No exime la validación en el lado del servidor
– La aplicación debe funcionar si se desactiva Javascript
Directrices de diseño para navegadores
● Comunicación con el servidor– Se realiza a través de HTTP(S)
– Métodos GET y POST
– Las peticiones para actualizar datos generalmente son a través de POST
– El API de servlet proporciona el interfaz para atender ambos métodos (doGet, doPost)
– Una aplicación J2EE debe utilizar JSP para generar documentos HTML
Directrices de diseño para navegadores
● Gestión de la sesión– HTTP es un protocolo de petición-respuesta donde
cada petición es tratada independientemente
– Sesión: Secuencia de peticiones realizadas por un usuario utilizando un único cliente
– Formas de guardar la sesión:● Cookies● Reescritura de URL (URL rewriting)
– Identificador de sesión (jsessionid)
– Los servidores deben manejar el estado de la sesión
Directrices de diseño para navegadores
● Accesibilidad web– Capacidad de acceso a la web y a sus contenidos por
todas las personas independientemente de la discapacidad que presenten y del contexto de uso (ambientales, tecnológicas)
– Validación semántica del contenido (Test W3C)
– Herramientas de accesibilidad (TAW)
– Relacionado con el posicionamiento en buscadores