Modelo Cliente Servidor

Post on 25-Jul-2015

30 views 0 download

Transcript of Modelo Cliente Servidor

Modelo cliente-servidor

Ingeniería de Software Sommervile

• El modelo arquitectónico cliente-servidor es un modelo de sistema en el que dicho sistema se organiza como un conjunto de servicios y servidores asociados, más unos clientes que acceden y usan los servicios. Los principales componentes de este modelo son:

1. Un conjunto de servidores que ofrecen servicios a otros subsistemas. Ejemplos de servidores son servidores de impresoras y servidores de archivos.

2. Un conjunto de clientes que llaman a los servicios ofrecidos por los servidores. Éstos normalmente son subsistemas en sí mismos.

3. Una red que permite a los clientes acceder a estos servicios; Aunque el cliente y servidor bien podrían ejecutarse en una única máquina.

• En este modelo los clientes necesitan de conocer al servidor. Sin embargo, los servidores no necesitan conocer a los clientes.

• Paréntesis:– Es una ventaja porque diversos clientes pueden

hacer uso del servidor sin necesidad de que éste se entere. (No implica hacer alguna instalación adicional en el servidor)

– Desventaja: puede permitir que cualquier cliente trate de accesar a sus recursos.

• Ejemplo

• La ventaja más importante del modelo cliente-servidor es que es una arquitectura distribuida.

• Se puede hacer uso efectivo de los sistemas en red con muchos procesadores distribuidos.

• Es fácil añadir un servidor e integrarlo (ya que el servidor no necesita conocer los clientes)

• Sin embargo, puede ser necesario realizar cambios a los clientes y servidores existentes para obtener los mayores beneficios de la integración de un nuevo servidor.

• Puede no haber un modelo de datos compartido entre los servidores.

• Existen dos tipos de sistemas distribuidos:

– Arquitecturas cliente servidor. (que ya se vió)– Arquitecturas de objetos distribuidos. En este caso

no hay distinción entre los servidores y clientes, y el sistema puede ser visto como un conjunto de objetos que interactúan y cuya localización es irrelevante. No hay distinción entre proveedor de servicios y el usuario de estos servicios.

• Una de las complicaciones de los sistemas distribuidos es que la representación de información, modelo de datos y protocolos pueden ser diferentes.

• Un sistema distribuido requiere de software que pueda gestionar estas partes distintas y asegurar la comunicación.

• Este tipo de software se llama middleware y está situado en medio de los diferentes componentes distribuidos del sistema. Ejemplo:– Software para gestionar comunicación entre base

de datos.– Administradores de transacciones – Convertidores de datos y controladores de

comunicación.

• Clientes y servidores son procesos diferentes

• A los procesos del cliente no le importan los del servidor y viceversa.

• Sin embargo, eso no implica que un servidor tenga que realizar sólo un proceso de servidor (no hay correspondencia 1:1).

Tipos

• La arquitectura de cliente-servidor más simple es la de dos capas.

• En ésta, la aplicación se organiza con un servidor ( o múltiples servidores idénticos) y un conjunto de clientes.

• A su vez existen dos subtipos de arquitecturas de dos capas:

– Modelo de cliente ligero: El procesamiento de las aplicaciones y la gestión de datos se hace en el servidor. El cliente sólo presenta los datos. (El cliente tiene poca carga de trabajo)

– Modelo de cliente gordo: el cliente implementa la lógica de la aplicación y las interacciones con el usuario del sistema. El servidor solo se hace cargo de la gestión de los datos.

• Otro modelo es el de tres capas:

• La elección de qué modelo de arquitectura utilizar depende enteramente de la aplicación.

• Al diseñar la arquitectura cliente-servidor, ésta debería reflejar la estructura lógica de la aplicación desarrollada.

• Por ejemplo

GUI para transacción bancaria

Procesamiento de datos.

Almacenamiento de datos.

Caja de texto para realizar búsqueda en facebook

Algoritmos de búsqueda

Base de datos de usuarios

• Una aplicación como la anterior quedaría mal distribuida en un modelo de dos capas.

• Tanto el cliente como el servidor podrían estar con una carga de trabajo excesiva.

• Esto afecta a la escalabilidad y rendimiento del sistema. Es mejor usar un modelo de 3 capas: