Arquitectura Cliente/Servidor Claudio Cubillos Escuela de Ingeniería Informática Pontificia Universidad Católica de Valparaíso, Chile claudio.cubillos@ucv.cl Arquitectura cliente/servidor v Servidor: rol que desempeña un equipo ofreciendo un conjunto de servicios a los clientes, tales como manejo de archivos, impresión, páginas web, direccionamiento de correo electrónico, actualización de BD y control de acceso. v Cliente: rol que desempeña un equipo demandando servicios de los servidores, pero también puede realizar procesamiento local, tales como desplegar páginas web, mostrar ventanas y generar correo electrónico. v Eventualmente un mismo equipo puede desempeñar ambos roles. ... Arquitectura cliente/servidor v Tareas se pueden distribuir entre estos roles: § Presentación: software que permiten presentar en forma adecuada los resultados de una aplicación, p. ej. ventanas en Windows, páginas web en un navegador. § Aplicación: software que entrega un resultado útil para el usuario (lógica del negocio), p. ej. consulta de una factura, valorización de un inventario. § Administración de datos: manejo de los datos (en una BD) que sirven a las aplicaciones de la lógica del negocio, p ej. datos de los productos de una factura, productos en inventario. ... Arquitectura cliente/servidor CLIENTE Presentación Presentación Presentación Presentación Presentación Lógica del Negocio Lógica del Negocio Lógica del Negocio Administración de datos Presentación Lógica del Negocio Lógica del Negocio Lógica del Negocio Administración de datos Administración de datos Administración de datos SERVIDOR Administración de datos Administración de datos ... Arquitectura cliente/servidor v Arquitectura de 2 capas: SERVIDOR CLIENTE LÛgica del Negocio Presentación AdministraciÛn de datos v Arquitectura de 3 capas: SERVIDOR DE DATOS AdministraciÛn de datos SERVIDOR DE APLICACIONES LÛgica del Negocio CLIENTE PresentaciÛn ... Arquitectura cliente/servidor v Ejemplo de arquitectura cliente/servidor: Cliente Web: • S.O.: Mac OS • Navegador: Safari Cliente Web: • S.O.: Windows • Navegador: Opera ... Internet Cliente Web: • S.O.: Windows XP • Navegador: IExplorer Servidor Web y de Aplicaciones: • S.O.: Linux • Software servidor web: Apache • Lenguaje de aplicaciones: PHP Servidor de BD: • S.O.: Linux • Sistema de administración de BD: MySQL • Lenguaje de consultas: SQL ... Arquitectura cliente/servidor v Uso de herramienta XAMPP para lado Servidor ¿Cómo hemos llegado hasta aquí? La evolución de la arquitectura de los sistemas de información Conceptos básicos y notación Cliente Capa de Presentación Lógica de la Aplic. Reglas de Negocio Adm. de Recursos Objectos del Negocio Cliente Cliente Servidor Base de Datos Procesos de Negocio Almacenamiento Persistente v El Cliente es cualquier usuario o programa que quiere realizar una operación sobre el sistema. Para apoyarlo, el sistema debe tener una capa de presentación a través de la cual el usuario puede enviar las operaciones y obtener un resultado. v La lógica de la aplicación establece qué operaciones se pueden realizar sobre el sistema y cómo se llevarán a cabo. Se encarga de hacer cumplir las reglas de negocio y establecer los procesos de negocio. Puede ser expresado como: restricciones, procesos de negocio, servidores con la lógica codificada, etc. v El administrador de recursos trata con la organización de los datos necesarios (almacenamiento, indexación y recuperación) para apoyar la lógica de la aplicación. Ej. BD relacional, BD en XML, archivo Excel, o cualquier otro sistema con capacidades de consulta y persistencia. Distribución en diferentes capas Soporte para múltiples clientes Lógica de la Presentación Distribution/replicación de los Datos Lógica de la Aplicación Lógica de la aplicación separada Todas las combinaciones Adm. de Recursos Un juego de cajas y flechas v Cada cuadro representa una parte del sistema. Cada flecha es una conexión entre dos partes del sistema. v Cuanto más cajas, más modular es el sistema: más oportunidades para la distribución y el paralelismo. Esto permite encapsulación, diseño basado en componentes, la reutilización. No existe problema en el diseño del sistema que no pueda ser resuelto agregando un nivel de indireccionamiento. No existe problema de rendimiento que no pueda ser resuelto mediante la eliminación de un nivel de indireccionamiento. v A más cajas, a más flechas: más sesiones (conexiones) deben mantenerse, más coordinación es necesaria. El sistema se vuelve más complejo de controlar y gestionar. v A más cajas, mayor será el número de decisiones de contexto y pasos intermedios que pasar antes de llegar a los datos. El rendimiento se resiente considerablemente. v Los diseñadores de sistemas tratan de equilibrar la capacidad de los equipos implicados y las ventajas y desventajas de las diferentes arquitecturas. Arquitectura (1): Completamente Centralizado Arquitectura de 1 capa Servidor v La capa de presentación, lógica de aplicación y gestión de recursos se construye como una entidad monolítica. v Usuario/programas acceden al sistema a través de terminales de pantalla, § pero lo que se muestra y cómo aparece es controlado por el servidor. § llamadas terminales tontas. v Esta era la arquitectura típica de las aplicaciones de mainframe, ofreciendo varias ventajas: § flujo de control sin decisiones de contexto (todo sucede dentro del sistema), § todo está centralizado; gestión y control de los recursos es más fácil, § diseño altamente optimizado al eliminar la separación entre las capas. Arquitectura (2): sistema a 2 capas v Al hacerse las computadoras más poderosas, la capa de presentación se mueve al cliente. Esto tiene varias ventajas: Servidor § Los clientes son independientes entre sí: se puede tener varias capas de presentación dependiendo de lo que cada cliente quiere hacer. § Se puede aprovechar la potencia de cálculo en la máquina cliente teniendo capas de presentación más sofisticadas. Esto también ahorra recursos de la máquina servidor. § Se introduce el concepto de API (Application Program Interface). Una interfaz para invocar el sistema desde el exterior. § El administrador de recursos sólo tiene un cliente: la lógica de la aplicación. Esto ayuda mucho con el rendimiento ya que no hay conexiones y sesiones para mantener. Middleware v El Middleware es un nivel de indirección entre los clientes y las demás capas del sistema. v Se introduce una capa adicional de la lógica de negocio que abarca todos los sistemas subyacentes. v De esta manera, un sistema middleware: clientes Middleware Lógica de aplicación Adm. de recursos middleware Server A Server B § simplifica el diseño de los clientes mediante la reducción del número de interfaces, § proporciona un acceso transparente a los sistemas subyacentes, § actúa como plataforma para la funcionalidad inter-sistema y la lógica de aplicación de alto nivel, y § se encarga de localizar los recursos, el acceso a ellos, y la recolección de resultados. Arquitectura (3): sistema a 3 capas v En un sistema de tres niveles, las tres capas están completamente separadas. v Para algunos, un sistema basado en middleware es una arquitectura de 3 capas. Esto es un poco simplista, pero es correcto conceptualmente ya que los sistemas subyacentes pueden ser tratados como cajas negras. v Los sistemas de 3 niveles tienen las mismas ventajas que un sistema de middleware y también sus desventajas. v En la práctica, las cosas no son tan simples como parecen … hay varias capas ocultas que no son necesariamente triviales; ej. los wrappers.