33
Arquitectura Web en Aplic aciones Empresariales Jav a/J2EE www.dflanvin.com /docencia/arquitectura Daniel Fernández Lanvin www.dflanvin.com /docencia/arquitectura Arquitectura Web

Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Embed Size (px)

Citation preview

Page 1: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

ArquitecturaWeb

Page 2: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Introducción

Concepto de Arquitectura en Desarrollo Software

Concepción desde RUP Arquitectura física Distribución de nodos en la red Mapeo componente software – nodo computacional

Concepto de Arquitectura software Moderno Patrones de diseño de arquitectura Separación de responsabilidades No existe forma de representar arquitectura software

con las herramientas actuales (RUP-UML)

Page 3: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Aplicaciones Web con Java

Fuerte apuesta por parte del sector privado: Sun Microsystems. Extensiones J2EE BEA Systems con Weblogic IBM con WebSphere Netscape (y Sun) con iPlanet

Fuerte apuesta del mundo opensource! www.apache.org Desarrollo del servidor web apache, el

más difundido del mundo. Jakarta.apache.org Conjunto de frameworks y clases de

utilidad como apoyo al desarrollo de aplicaciones basadas en java/J2EE.

www.jboss.org Desarrollo del contenedor de EJBs Jboss. Gratuito y muy efectivo.

Page 4: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Evolución de Modelos Arquitectónicos

Modelo 1

Modelo 1.5

Modelo 2

Modelo 2X

Servlets/JSPs

MVC Model

Multicanalidad

Page 5: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Modelo de Arquitectura 1Aplicaciones CGI

Las más primitivas Aplicaciones Web CGI Presentación, negocio y persistencia

mezclados

Browser Script CGI Database

Page 6: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Modelo de Arquitectura 1.5JSP y Servlets

Separación de responsabilidades: JSPs llevan la lógica de presentación (navegabilidad,

visualización, etc.) Beans incrustados asumen las responsabilidades de

negocio y datos

Page 7: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Modelo de Arquitectura 2MVC Evolución del modelo 1.5 Incorporación del patrón de diseño MVC.

Controlador: Navegación Negocio y Datos: Beans Presentación: JSPs

Page 8: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Modelo de Arquitectura 2MVC con Struts Struts es la implementación del MVC que aporta

Jakarta para aplicaciones web java. http://jakarta.apache.org/struts

Page 9: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Modelo de Arquitectura 2XAplicaciones Multicanal Evolución del modelo 2

para construir aplicaciones multicanal.

Implementación de referencia STXX (extiende Struts)

http://stxx.sourceforge.net/

Soluciones basadas en XML y XSLTs.

Page 10: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Aspectos Generales enArquitectura WEB

Escalabilidad Separación de responsabilidades Portabilidad Componentización de los servicios de

infraestructura Gestión de la sesión del usuario, cacheado de

entidades Aplicación de patrones de diseño

Page 11: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Escalabilidad¿Importancia?

Característica principal apps WEB: Posible incremento vertiginoso del número de

usuarios Es importante:

El correcto dimensionamiento de la aplicación La adaptabilidad del sistema ante el incremento de

demanda. Varias opciones:

Escalabilidad Horizontal Escalabilidad Vertical Cluster de servidores

Page 12: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

EscalabilidadHorizontal

Clonamos el sistema y balanceamos la carga.

Sistema

Usuarios Internet

Sistema

Sistema

Sistema

Bala

nce

ad

or

Page 13: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

EscalabilidadHorizontal. Balanceador HW

Distribuye por algoritmos predeterminados (Round Robin, LRU, etc.) las peticiones HTTP entre los distintos clones del sistema

La selección del clon es por tanto aleatoria Problema: No garantiza que diferentes peticiones de un

mismo usuario sean servidas por el mismo clon del sistema -> No hay mantenimiento de la sesión del usuario en servidor -> Condiciona el Diseño!.

La sesión la debe mantener el desarrollador por otros medios:

Cookies En base de datos

Al ser un proceso HW, es MUY rápido.

Page 14: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

EscalabilidadHorizontal. Balanceador SW

Examinan el paquete a nivel del protocolo HTTP para garantizar el mantenimiento de la sesión de usuario.

Distintas peticiones del mismo usuario son servidas por el mismo clon del servidor.

Más lentos que los balanceadores HW Normalmente son soluciones baratas. Ej., módulo mod_jk de apache.

Page 15: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

EscalabilidadHorizontal. Balanceador HW HTTP

Dispositivos HW que examinan la petición a nivel de paquete HTTP.

Término medio entre las dos anteriores. Garantizan el mantenimiento de sesión. Más rápidos que los SW pero menos que los

HW.

Page 16: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

EscalabilidadVertical

La separación lógica entre capas se implementar de forma que permita la separación física de las mismas.

Es necesario un Middleware entre las capas para permitir la comunicación remota.

Capa 1

Máquina 1

Capa 2

Máquina 1

Capa n

Máquina 1

Sistema completo

Máquina

Page 17: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

EscalabilidadCusters de Servidores

Habituales en los servidores de aplicaciones comerciales (Weblogic, WebSphere, iPlanet, etc.).

Dependiendo de cómo se aplique puede clasificarse como horizontal o vertical.

Distribuye y escala el sistema de modo transparente a usuario y administrador.

Garantiza que sea cual sea la máquina que sirva la petición http tendrá acceso a la sesión del usuario (Replicación de sesión)

La replicación de sesión es MUY costosa, produce bajo rendimiento del sistema.

Page 18: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Entonces…¿Qué hacer con la sesión?

Primeras tendencias eran evitar apoyarse en la sesión (objeto Session): sólo había balanceadores hw.

Hoy en día, está aceptado y se fomenta su uso.

OJO! Es MUY delicado. El uso excesivo del objeto session puede acarrear problemas de rendimiento, puesto que los objetos en sesión no se liberan hasta que no caduque la misma.

Page 19: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Separación de Responsabilidades

Premisa base para la separación de capas Distintas Responsabilidades no deben ser delegadas en

la misma clase (separación de incumbencias) Tendencia actual en aplicaciones WEB:

Arquitectura n-capas El modelo más básico es el de tres capas:

Capa de presentación Capa de negocio Capa de persistencia

Independencia de capas

Page 20: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Separación de Responsabilidades – Evolución

SERVIDOR

APLICACIÓN

•APLICACIONES MAINFRAME

Única capa física y lógica

Page 21: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Separación de Responsabilidades – Evolución

NEGOCIO Y ACCESO A DATOS

PRESENTACIÓN Y NEGOCIO

Separación Lógica y Física de la interfaz de usuario

CLIENTE

SERVIDOR

•APLICACIONES CLIENTE - SERVIDOR

Page 22: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Separación de Responsabilidades – Evolución

Negocio + acceso a datos

Presentación

Arquitectura basada en Transaction Scripts (CGIs, Modelo 1)

Interfaz WEB – HTML + lenguaje de script

•PRIMERAS APLICACIONES WEB

Page 23: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Separación de Responsabilidades – Evolución

Presentación

Negocio

Persistencia

•APLICACIONES 3 CAPAS

JSPs, HTML, lógica de presentación

Lógica de negocio, procesos neg.

Componentes de acceso a datos

Page 24: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Separación de Responsabilidades – Evolución

•Modelo de Brown ncapas

JSPs, HTML, lógica de presentación

Lógica de negocio, procesos neg.

Componentes de acceso a datos

Presentación

Negocio

Persistencia

Page 25: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Separación de Responsabilidades – Capa de presentación

Comprende las responsabilidades de lógica de presentación:

Navegabilidad del sistema Validación de datos de entrada Formateo de los datos de salida Internacionalización Renderizado de presentación Etc.

Page 26: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Separación de Responsabilidades – Capa de negocio

Comprende las responsabilidades de lógica de negocio (o dominio) del sistema.

Resultado del análisis funcional: Conjunto de reglas de negocio que abstraen el

mundo real. La capa de negocio ha de ser independiente

de la capa de presentación y viceversa (en la medida de lo posible).

Page 27: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Separación de Responsabilidades – Capa de persistencia

Comprende las responsabilidades de lógica de persistencia de las entidades que maneja el sistema en desarrollo.

Inserción Eliminación Actualizaciones Búsquedas Etc.

No tiene porqué tratarse necesariamente de una base de datos relacional.

Page 28: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Portabilidad

Una aplicación web debe poder adaptarse a las distintas arquitecturas físicas posibles en el despliegue.

Las tareas de adaptación a un nuevo entorno deben limitarse al ámbito de la configuración, no del desarrollo.

Supuesto de ejemplo: Cliente reacio a las tecnologías de componentes J2EE (EJBs) por costes, rendimiento o simplemente, moda.

Page 29: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Componentización de los servicios de infraestructura

¿Servicio de infraestructura?: Componentes independientes del dominio.

Rompen aparentemente la separación vertical de capas. Dan lugar a la capa de infraestructura. Ej.:

Servicio de Log Pool JDBC Sistema de configuración Gestor de permisos de acceso Etc.

Page 30: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Gestión de la sesión del usuario

Aspecto muy delicado del sistema Cacheado de entidades en

Sesión de usuario Contexto de la aplicación

Caducidad de la información Refresco de datos Rendimiento del sistema. Consumo de

recursos del sistema.

Page 31: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

Aplicación de patrones de Diseño

Definición de patrón de diseño GOF 94 Design Patterns Además de una solución válida para problemas

habituales, son un medio de entendimiento que facilita la comunicación entre analista y desarrollador.

Aceleran el desarrollo de Software Facilitan el mantenimiento En proceso de integración en las herramientas

CASE (Rose, Together, etc.).

Page 32: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

WorkShop!

Desarrollo de un contador de visitas. Empleo de los objetos de sesión y contexto.

Descargarse de la web el entorno de trabajo 0.5 (Contador de visitas de cada usuario!).

Descomprimir en el directorio del curso, compilar y desplegar.

Probar contador accediendo mediante el navegador a:

http://localhost:8080/arqui-java

Abrir el fichero index.jsp y examinar el código

Page 33: Www.dflanvin.com/docencia/arquitectura Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web

Arquitectura Web en Aplicaciones Empresariales Java/J2EE

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin www.dflanvin.com

/docencia/arquitectura

WorkShop (II)!

Modificar el contador de visitas para que cuente las de TODOS los usuarios que accedan a la página

Editar el fichero index.jsp. En Lugar de colocar y recuperar el atributo contador de la

sesión, hacerlo del contexto. Ej. Sustituir

session.getAttribute("contador")Por session.getServletContext().getAttribute("contador")

Compilar y desplegar con Ant, y probar la aplicación en…

http://localhost:8080/arqui-java