Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Slides:



Advertisements
Presentaciones similares
Desarrollo de aplicaciones en n- capas
Advertisements

Curso de PHP Tema 1: Introducción.
Internet y tecnologías web
CUPS Configuración y Uso de Paquetes de Software
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
Red Social: “Un millón de Amigos”.
Hardware y Software de servidor
Servidores Web Capítulo 2.
J2EE – Java 2 Enterprise Edition
Jakarta Tomcat (Contenedor de servlets/jsps)
Arquitectura Web en Aplicaciones Empresariales Java/J2EE
Aplicaciones J2EE.
Capa de Persistencia Daniel Fernández Lanvin.
Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Entorno de trabajo.
Capa de Negocio. Capa de Negocio Responsabilidades Implementa procesos de negocio identificados durante el análisis funcional. Control de acceso a los.
Entorno de trabajo con apache ant
Universidad Nacional Autónoma de Honduras
Arquitectura del sistema
Arquitectura Orientada a Servicios (SOA)
La Plataforma Holmes y Aplicaciones
"java del lado del servidor" Servlet y JSP Java Server Pages.
Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz.
Spring Framework v2.5.
Índice 1. Introducción, objetivos y justificación del proyecto.
Investigación Servidor de Aplicaciones WebSphere
ACIS Desarrollar proyectos de software y “evitar” el fracaso ?
Java 2 Platform Enterprise Edition
Infraestructura de Tecnologías de Información
Mayo de 2009Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a Base de Datos Conceptos básicos.
Ing. CIP Fabián Silva Alvarado
Aplicaciones Web con Oracle y XML 5 años de experiencias Universidad de las Islas Baleares Centro de Tecnologías de la Información Daniel López.
Tecnologías para el desarrollo de aplicaciones Web
Persistencia de Objetos. Definicion Persistencia : El la capacidad de un objecto to continuar existiendo despues que su creador (programa que crea este)
Desarrollo de Aplicaciones Utilizando Java Edición Empresarial – JEE6
Propósito: * Mostrar indicativos porcentuales de los diversos microorganismos con los que se alimentan el camarón en un manejo semi-intensivo aplicado.
Arquitectura Web.
Sistemas Distribuidos basados en la web
Aplicación Web para Informes de Asignaturas de Trabajo en Grupo
J2EE Java Enterprise edition eilin chang Matthew pabon Gabriel vega.
Desarrollo de aplicaciones para ambientes distribuidos
Marco Conceptual para la Gestión de Conocimiento de entornos de colaboración: aplicación a la creación de un portal de revistas electrónicas EUITIO Daniel.
CURSO STRUTS 2 RESUMEN Resumen de lo visto en este primer módulo de INTRODUCCIÓN al framework Struts 2 Debes tener los conceptos muy claros sobre: Framework.
Servidores Conceptos Generales.
Lenguajes de programación para la web Lenguaje html Lenguaje java script Es un lenguaje estático para el desarrollo de sitios web Ventajas: Sencillo que.
FRAMEWORK VS Código fuente
IS2Objetos Distribuidos - J2EE,RMI1 Ingeniería del software II Ingeniería Web.
Desacoplamiento de Capas
Daniel Fernández Lanvin Capa de Negocio.
Daniel Fernández Lanvin Capa de Infraestructura. Daniel Fernández Lanvin Capa de Infraestructura Adyacente a todas las demás. Comprende todos aquellos.
Cuentas de usuarios y grupos en windows 2008 server
Daniel Fernández Lanvin Capa de Presentación. Daniel Fernández Lanvin Capa de Presentación Responsabilidades Navegabilidad del sistema Formateo de los.
IS2Objetos Distribuidos - J2EE,RMI1 Ingeniería del software II Ingeniería Web.
Programación Java y Desarrollo de Aplicaciones Modulo 3 Lenguaje de programación Java Software utilizado.
1. Introducción a los Sistemas de Internet Gestión de Sistemas en Internet Universidad Antonio de Nebrija 2003/04 Justo N. Hidalgo Sanz.
CONTRATOS DE CLIENTES Orlando Sedamano Cornejo Marco Bustinza
DISEÑO CURRICULAR Presentado por: Cesar Augusto Sáenz María Alejandra Hernández 1.contenidos curriculares de competencia.
Luis Ponce Cabello.  Primera Parte : JSF  Segunda Parte : Facelets  Tercera Parte : Icefaces.
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
Guadalupe Andrade Mociño.  Significa Modelo Vista Controlador  Es un patrón de diseño  Esta compuesto por tres grandes capas: modelo, vista y controlador.
Daniel Fernández Lanvin Desacoplamiento de Capas.
Capítulo 12. Tecnología y herramientas. Ricardo García Mataix
APACHE WEB SERVER El proyecto Apache Web Server es un desarrollo de software en colaboración, enfocado en crear una implementación de un servidor HTTP.
Your Logo ING. FREDY ALEXANDER MARTINEZ. Here comes your footer  Page 2 Este patrón fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementación.
La Rematada Sitio de remates “El Porton”. Introducción El objetivo es desarrollar un sitio web de remates de productos para promocionar la compra de yerba.
Autores: Myriam Montes, Iván Viera, Carlos Caizaguano, José Sancho
Conociendo el modelo Cliente-Servidor
1.  Tomcat es un contenedor web basado en el lenguaje Java que actúa como motor de servlets y JSPs.  Se ha convertido en la implementación de referencia.
GESTIÓN Y ADMINISTRACIÓN WEB. INTRODUCCIÓN A INTERNET Internet constituye una vía de comunicación y una fuente de recursos de información a escala mundial.
Conociendo el modelo Cliente-Servidor. Introducción En el mundo de TCP/IP las comunicaciones entre computadoras se rigen básicamente por lo que se llama.
SYMFONY Información del Framework. Síntesis de Symfony  Es un framework diseñado para optimizar el desarrollo de aplicaciones web creado con PHP5. 
Transcripción de la presentación:

Arquitectura Web en Aplicaciones Empresariales Java/J2EE Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Arquitectura Web en Aplicaciones Empresariales Java/J2EE 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) Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Evolución de Modelos Arquitectónicos Modelo 2X Servlets/JSPs MVC Model Multicanalidad Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Modelo de Arquitectura 1 Aplicaciones CGI Las más primitivas Aplicaciones Web CGI Presentación, negocio y persistencia mezclados Browser Script CGI Database Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Modelo de Arquitectura 1.5 JSP 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 Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Modelo de Arquitectura 2 MVC 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 Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Modelo de Arquitectura 2 MVC con Struts Struts es la implementación del MVC que aporta Jakarta para aplicaciones web java. http://jakarta.apache.org/struts Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Modelo de Arquitectura 2X Aplicaciones 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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Aspectos Generales en Arquitectura 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 Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

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 Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Escalabilidad Horizontal Clonamos el sistema y balanceamos la carga. Balanceador Sistema Sistema Usuarios Internet Sistema Sistema Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Escalabilidad Horizontal. 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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Escalabilidad Horizontal. 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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Escalabilidad Horizontal. 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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Escalabilidad Vertical 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 Capa n Sistema completo Máquina Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Escalabilidad Custers 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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

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 Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Separación de Responsabilidades – Evolución APLICACIONES MAINFRAME SERVIDOR APLICACIÓN Única capa física y lógica Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Separación de Responsabilidades – Evolución APLICACIONES CLIENTE - SERVIDOR NEGOCIO Y ACCESO A DATOS PRESENTACIÓN Y NEGOCIO CLIENTE SERVIDOR Separación Lógica y Física de la interfaz de usuario Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Separación de Responsabilidades – Evolución Arquitectura basada en Transaction Scripts (CGIs, Modelo 1) Interfaz WEB – HTML + lenguaje de script PRIMERAS APLICACIONES WEB Negocio + acceso a datos Presentación Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Separación de Responsabilidades – Evolución APLICACIONES 3 CAPAS Presentación Negocio Persistencia JSPs, HTML, lógica de presentación Lógica de negocio, procesos neg. Componentes de acceso a datos Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Separación de Responsabilidades – Evolución Modelo de Brown ncapas Presentación Negocio Persistencia JSPs, HTML, lógica de presentación Lógica de negocio, procesos neg. Componentes de acceso a datos Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

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). Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Arquitectura Web en Aplicaciones Empresariales Java/J2EE 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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

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. Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

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.). Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Arquitectura Web en Aplicaciones Empresariales Java/J2EE 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 Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE

Arquitectura Web en Aplicaciones Empresariales Java/J2EE 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 Daniel Fernández Lanvin Arquitectura Web en Aplicaciones Empresariales Java/J2EE