DEW_U1_S1_S2

34
Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Unidad 1: Introducción a la  Arquitectura Web

Transcript of DEW_U1_S1_S2

  • LogroAl finalizar la unidad el alumno:identifica las ventajas de la arquitectura web y discute las tecnologas vigentes sobre esta plataforma.UPC - EPE - Ingeniera de Sistemas - Programa de Actualizacin Profesional**

    UPC - EPE - Ingeniera de Sistemas - Programa de Actualizacin Profesional

  • AgendaIntroduccin a la arquitectura WebIntroduccin a la arquitectura JavaEEComparacin de tecnologas WebServidores de aplicaciones

    Programa de Actualizacin ProfesionalIngeniera de Sistemas - EPE

    Introduccin a la arquitectura Web

    UPC - EPE - Ingeniera de Sistemas - Programa de Actualizacin Profesional

  • IntroduccinEn la ingeniera de software se denomina aplicacin Web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a un servidor Web a travs de Internet o de una intranet mediante un navegador.

  • Paradigma Cliente/ServidorPatrn arquitectnico para el desarrollo de sistemas distribuidos.Distribuye una aplicacin entre 2 o ms componentes especializados cuya ejecucin se distribuye entre 1 o ms equipos.Define un modelo de interaccin basado en el concepto de servicio implementado sobre un dilogo peticin-respuesta.Cliente inicia el dilogo mediante el envo de peticiones.Servidor presta el servicio en que se sincronizan los procesos.

  • Paradigma Cliente/ServidorEspecifica el modo en que se sincronizan los procesos:Cliente (Parte activa)Demanda servicios a los servidoresSe asume que cada peticin deber obtener respuestaDiseado para soportar la interaccin con el usuario finalServidor (Parte pasiva)Espera las peticiones de los clientesProcesa esas peticiones y enva una respuestaDiseo orientado a maximizar la eficiencia.Posibilidad de aplicar el patrn cliente servidor en mltiples niveles de abstraccin dentro de un mismo sistema distribuido (arquitecturas multinivel [n-tier] )

  • Componentes de los Sistemas Cliente / ServidorCaractersticas de los clientesComponente del sistema que interacta con el usuario.No comparte sus recursos con otros clientes.No suelen tener restricciones especiales respecto a rendimiento, fiabilidad y escalabilidadNo suele requerir equipos de altas prestacionesFallo de un cliente no afecta el resto.Debe dar soporte a restricciones relativas a ergonoma (facilidad de uso) y seguridad (evitar comprometer los dems componentes).

  • Componentes de los Sistemas Cliente / ServidorCaractersticas de los servidores:Componente del sistema que presta servicios a los clientes.Gestiona y comparte sus recursos con los clientes y a los que sirve.Suele tener restricciones especiales respecto al rendimiento, fiabilidad, escalabilidad y seguridad.Capacidad suficiente para atender mltiples clientesFallos en el servidor son crticos e invalidan el sistemaEl nmero de clientes (peticiones) puede ser muy variable y aumentar si as se requiereEvitar comprometer la seguridad de los recursos o datos gestionados y de los clientes.

  • Modelos y tipologasEsquema abstracto de aplicaciones distribuidas genricas (capas). Se corresponden con las funciones tpicas de un sistema.Capa de presentacin (interfaz de usuario)Interacciona con el usuario, presenta los datos y recibe las entradas.Capa de aplicacin/negocio (lgica de aplicacin)Responsable de las tareas propias de la aplicacin concreta.Implementa la lgica de la aplicacin y aplica las reglas de negocio sobre los datos y las entradas de usuario.Capa de datos (almacenamiento y acceso a datos)Responsable de la gestin y almacenamiento permanente de los datos.Cada tipo de sistema cliente-servidor distribuye esas capas de modo distinto entre los componentes cliente y servidor

  • Cliente Ligeros versus PesadosCliente ligero (thin client)No implementa ningn aspecto de la lgica de aplicacin.Simplemente acta como intermediario entre usuario y servidor.Recoge entradas (opcionalmente las valida) y las enva al servidor.Presenta datos y resultados del servidor.Normalmente, requisitos mnimos respecto a recursos de hardware.Aumenta la complejidad del servidor (tendr mayores responsabilidades)Ejemplo: clientes basados en navegadores Web:Capa de presentacin repartida entre servidor (genera HTML en demanda) y cliente (navegador lo presenta).En ltimos aos surgen clientes ricos (tecnologa AJAX, RIA (Rich Internet Application)

  • Cliente Ligeros versus PesadosCliente pesado (fat client)Implementa mayor parte de la lgica de aplicacinRealiza procesamiento sobre datos de usuario antes de comunicar con el servidor.Requiere equipos con capacidad de proceso y/o almacenamiento de datos.Servidor sencillo (responsabilidades mnimas, gestin de datos)Ejemplo: aplicacin cliente contra servidor de base de datos

  • Arquitecturas 2-tier, 3-tier, n-tierClasificacin en funcin de la ubicacin fsica de las distintas funcionalidades.Modelo tradicional: 2-tier (cliente-servidor en 2 niveles)Un nico servidor atiende a mltiples clientesProblemasEscasa escalabilidad en servidores con lgica de negocios compleja o con grandes bases de datos (difcil replicacin)Rigidez: modificaciones en la lgica de aplicacin suponen grandes cambios en la totalidad de los clientes.Difcil evolucin del servidor.Limitacin principal: alto acoplamiento/dependencia del cliente respecto del servidor.Clientes ligeros, pesados o hbridos.

  • Arquitecturas 2-tier, 3-tier, n-tierModelo 3-tier (cliente servidor en 3 niveles)Extensin del modelo tradicional que pretende aumentar el desacoplamiento entre servidor y clientes.Introduce un nivel intermedio (separa servidor en 2 componentes)Cliente dedicado casi exclusivamente a interfaz de usuarioServidor de datos comparte con servidor del nivel intermedio la lgica de la aplicacin.El reparto preciso depende del modelo concreto seguido.Clientes ligeros o hbridos

  • Arquitecturas 2-tier, 3-tier, n-tierModelos n-tier o multi-tier (cliente servidor en n niveles)Generalizacin del modelo 3-tier (aade nuevas capas)La lgica de aplicacin se reparte en diferentes capas/niveles ubicadas entre el cliente y los datos.Las capas intermedias se proporcionan servicios entre si.Cada nivel se comunica slo con los niveles contiguos a travs de interfaces bien definidos.Capa K ofrece servicios a la capa K-1 y demanda servicios de capa K + 1.Estructura tpica en sistemas basados en componentes distribuidos (objetos distribuidos).Clientes ligeros o hbridos

  • Arquitecturas 2-tier, 3-tier, n-tierBeneficios de las arquitecturas multinivelElementos crticos de la lgica de negocio ubicados en el nivel medio.Ms cercanos a la capa de datos: eficiencia de accesoSlo los datos realmente necesarios acaban llegando al cliente.Mayor flexibilidad y modularidad.Escalabilidad: facilita aadir recursos para soportar mayor nmero de clientes.Extensibilidad: facilidad para propagar autenticacin y permisos a travs de las distintas capas.Seguridad: facilidad para propagar autenticacin y permisos a travs de las distintas capas.Facilidades de desarrollo y administracin:Resusabilidad de componentesAislamiento frente a cambios en otras capasIndependencia frente a cambios en base de datos

  • Arquitecturas 2-tier, 3-tier, n-tierDesventajas de las arquitecturas multinivelComplejidad: mayor nmero de elementos hardware y software a definir, gestionar y mantener:Interacciones complejas entre componentesDificultad para detectar, aislar y corregir fallos.Coste de comunicaciones: mayor latencia y consumo de ancho de banda (atravesar capas distribuidas por la red)Coste de mantenimiento: al crecer las capas aumenta el coste y la dificultad de instalacin y mantenimiento.

  • Arquitectura Web

  • Ventajas de la arquitectura WebActualizacin automticaSegn el paradigma cliente/servidor, la lgica de la aplicacin se encuentra centralizada. Los clientes son ligeros.MultiplataformaDiferentes arquitecturas de hardwareDiferentes sistemas operativosDiferentes navegadores WebPortableTecnologas como Java permiten crear aplicaciones Web portables.Clientes ligeros slo necesitan soportar el estndar HTML.Alta disponibilidadServidores Web replicados en la misma y/o diferentes ubicaciones geogrficas.

  • Desventajas de la arquitectura WebMenos funcionalidades que aplicaciones Desktop (de escritorio)Tradicionalmente, los navegadores Web presentan funciones limitadas.Tendencia de nuevas formas de crear aplicaciones Web con Ajax, RIA, entre otros.Requiere conexin a InternetAl menos que sea una sistema intranet.

    Programa de Actualizacin ProfesionalIngeniera de Sistemas - EPE

    Introduccin a la arquitectura JavaEE

    UPC - EPE - Ingeniera de Sistemas - Programa de Actualizacin Profesional

  • JavaEEJava Platform, Enterprise Edition o Java EE (anteriormente conocido como Java 2 Platform, Enterprise Edition o J2EE hasta la versin 1.4), es una plataforma de programacinparte de la Plataforma Javapara desarrollar y ejecutar software de aplicaciones en Lenguaje de programacin Java con arquitectura de N niveles distribuida, basndose ampliamente en componentes de software modulares ejecutndose sobre un servidor de aplicaciones.

  • JavaEE: Arquitectura n-tier

  • JavaEE: APIs y tecnologas

  • Web ContainerEl contenedor Web implementa el contrato de componentes Web de la arquitectura J2EE.Este contrato especifica un entorno de ejecucin para los componentes Web que incluye la seguridad, concurrencia, gestin de ciclo de vida, operacin, despliegue y otros servicios. Un contenedor Web maneja la ejecucin de las pginas JSP y componentes Servlet para aplicaciones JavaEE.

  • EJB ContainerEl contenedor de EJB maneja la ejecucin de los Enterprise Java Beans (EJB) para aplicaciones JavaEE.Los contenedores de EJB proveen servicios a los EJB, como:Comunicacin remota TransaccionesControl de concurrenciaEventos utilizando JMSServicios de nombres y directoriosSeguridadUbicacin de componentes.La especificacin de EJB define los papeles jugados por el contenedor de EJB y los EJB, adems de disponer los EJB en un contenedor.

    Programa de Actualizacin ProfesionalIngeniera de Sistemas - EPE

    Comparacin de tecnologas Web

    UPC - EPE - Ingeniera de Sistemas - Programa de Actualizacin Profesional

  • Otras tecnologas y lenguajes para WebASP.NETPHPPerlRubyPython

    Programa de Actualizacin ProfesionalIngeniera de Sistemas - EPE

    Servidores de aplicaciones

    UPC - EPE - Ingeniera de Sistemas - Programa de Actualizacin Profesional

  • Caractersticas

  • CaractersticasEl Servidor de Aplicaciones se encuentra compuesto por tres componentes: un servidor de pginas Web, un Web Container" y un "EJB Container.Dentro del Web Container" se ejecutan exclusivamente las clsicas aplicaciones de basadas en JSP's ("Java Server Pages") y Servlets.Mientras el "EJB Container" es reservado para aplicaciones desarrolladas alrededor de EJB's "Enterprise Java Bean's". Casi todos los servidores de aplicaciones en el mercado hoy en da son conocidos como "Fully JEE Compliant", este termino implica que se cumplen todas las especificaciones JavaEE definidas.

  • Servidor de aplicacionesCuando utiliza un servidor de aplicaciones como alguno de los siguientes ("Fully JEE Compliant"): Oracle WebLogicIBM WebSphere Application ServerGlassFish , no existe una clara distincin entre el "Web Container" y "EJB Container", es decir, es posible ejecutar tanto JSP/Servlets as como EJB's, sin embargo, el ambiente se encuentra altamente integrado para que sea transparente (al menos para el programador final) la comunicacin entre JSP/Servlets y EJB's.

  • Servidores Open SourceTomcat (slo Web container)GlassFishJbossGeronimoComercialesIBM WebSphere Application ServerOracle WebLogicSAP Netweaver

  • ReferenciasHall Marty, Brown Larry (2004). Core Servlets and JavaServer Pages.Hanumant Deshmukh, Jignesh Malavia y Jacquelyn Carter (2005). SCWCD Exam Study Kit - Manning.Sistemas cliente-servidor y procesos cooperativos Universidad de VigoWikipediahttp://www.jtech.ua.es/j2ee/2006-2007/jee.htmlhttp://java.sun.com/javaee/reference/

    *Una arquitectura es el conjunto de decisiones significativas sobre la organizacin de un sistema de software que define los principios que guan el desarrollo, los componentes principales del sistema, sus responsabilidades y la forma en que se interrelacionan.*