El modelo cliente-servidor consiste en un
sistema distribuido entre múltiples procesadores donde hay clientes que
solicitan servicios y servidores que los proporcionan. Separa los
servicios situando cada uno en su plataforma más adecuada.
El término Cliente/Servidor fue usado por
primera vez en 1980 para referirse a PC’s en red. Este modelo Cliente/Servidor
empezó a ser aceptado a finales de los 80’s. Su funcionamiento es sencillo: se
tiene una máquina cliente, que requiere un servicio de una máquina servidor, y
éste realiza la función para la que está programado (nótese que no tienen que
tratarse de máquinas diferentes; es decir, una computadora por sí sola puede
ser ambos cliente y servidor dependiendo del software de configuración).
El Modelo
Cliente-Servidor
Desde el punto de vista funcional, se
puede definir la computación Cliente/Servidor como una arquitectura distribuida
que permite a los usuarios finales obtener acceso a la información en forma
transparente aún en entornos multiplataforma.
En el modelo cliente servidor, el cliente
envía un mensaje solicitando un determinado servicio a un servidor (hace una
petición), y este envía uno o varios mensajes con la respuesta (provee el
servicio).
En un sistema distribuido cada máquina
puede cumplir el rol de servidor para algunas tareas y el rol de cliente para
otras.
La idea es tratar a una computadora como
un instrumento, que por sí sola pueda realizar muchas tareas, pero con la
consideración de que realice aquellas que son más adecuadas a sus
características.
Si esto se aplica tanto a clientes como
servidores se entiende que la forma más estándar de aplicación y uso de
sistemas Cliente/Servidor es mediante la explotación de las PC’s a través de interfaces
gráficas de usuario; mientras que la administración de datos y su seguridad e
integridad se deja a cargo de computadoras centrales tipo mainframe. Usualmente
la mayoría del trabajo pesado se hace en el proceso llamado servidor y el o los
procesos cliente sólo se ocupan de la interacción con el usuario (aunque esto
puede variar).
En otras palabras la arquitectura
Cliente/Servidor es una extensión de programación modular en la que la base
fundamental es separar una gran pieza de software en módulos con el fin de
hacer más fácil el desarrollo y mejorar su mantenimiento.
Esta arquitectura permite distribuir
físicamente los procesos y los datos en forma más eficiente lo que en
computación distribuida afecta directamente el tráfico de la red, reduciéndolo
grandemente.
Patrón arquitectónico
para el desarrollo de sistemas distribuidos.
·
Distribuye una aplicación
entre 2 o más componentes especializados cuya ejecución se distribuye entre 1 o
más equipos.
·
Define dos tipos de entidades
diferenciadas (asimétricas) que se responsabilizan de acciones diferentes:
clientes y servidores. Especifica 2 tipos de procesos con roles
diferenciados.
·
Define un modelo de interacción
basado en el concepto de servicio implementado sobre un dialogo petición-respuesta. Cliente
inicia el dialogo mediante el envío de peticiones. Servidor presta el
servicio y responde las peticiones recibidas
·
Especifica el modo en que se
sincronizan los procesos.
Cliente (parte
activa)
·
Demanda servicios a los
servidores.
·
Se asume que cada petición deberá
obtener respuesta.
·
Diseñado para soportar la interacción
con el usuario final.
Servidor (parte
pasiva)
·
Espera las peticiones de los
clientes.
·
Procesa esas peticiones y envía
una respuesta.
·
Diseño orientado a maximizar
la eficiencia.
Características de
los servidores.
Componente del sistema que presta
servicios a los clientes.
Gestiona y comparte sus recursos con los
clientes a los que sirve.
Suele tener restricciones especiales
respecto a rendimiento, fiabilidad, escalabilidad y seguridad:
·
Capacidad suficiente para
atender múltiples clientes.
·
Fallos en el servidor son críticos
e invalidan el sistema.
·
El número de clientes
(peticiones) puede ser muy variable y aumentar si así se requiere.
·
Evitar comprometer la
seguridad de los recursos o datos gestionados y de los clientes.
Características de
los clientes.
Componente del sistema que interactúa con
el usuario.
No comparte sus recursos con otros
clientes (en general).
No suelen tener restricciones especiales
respecto a rendimiento, fiabilidad y escalabilidad:
·
No suele requerir equipos de
altas prestaciones.
·
Fallo en un cliente no afecta
al resto del sistema.
Debe dar soporte a restricciones
relativas a ergónoma (facilidad
de uso) y seguridad (evitar comprometer los demás componentes)
Categorías de
Servidores
Ya se ha desarrollado una gran variedad
de servidores. La siguiente lista ampliada se ha extraído de:
Servidores de
archivos. Un servidor de archivos
proporciona archivos para clientes. Estos servidores se utilizan todavía en
algunas aplicaciones donde los clientes requieren un procesamiento complicado
fuera del rango normal de procesamiento que se puede encontrar en bases de
datos comerciales.
Servidores de
bases de datos. Los servidores de bases de
datos son computadoras que almacenan grandes colecciones de datos
estructurados. Por ejemplo, un banco utilizaría un servidor de bases de datos
para almacenar registros de clientes que contienen datos del nombre de cuenta,
nombre del titular de la cuenta, saldo actual de la cuenta y límite de
descubierto de la cuenta. Una de las características de las bases de datos que
invalidan la utilización de los servidores de archivos es que los
archivos que se crean son enormes y ralentizan el tráfico si se transfirieran
en bloque al cliente.
Servidores Web. Los documentos Web se almacenan como páginas en una
computadora conocida como servidor Web. Cuando se utiliza un navegador(browser) para
ver las páginas Web normalmente pincha sobre el enlace en un documento Web
existente. Esto dará como resultado un mensaje que se enviará al servidor Web
que contiene la página. Este servidor responderá entonces enviando una página a
su computadora, donde el navegador pueda visualizarlo. De esta manera los
servidores Web actúan como una forma de servidor de archivos, administrando
archivos relativamente pequeños a usuarios, quienes entonces utilizan un
navegador para examinar estas páginas.
Servidores de
impresión. Los servidores de impresión dan
servicio a las solicitudes de un cliente remoto. Estos servidores tienden a
basarse en PCs bastante baratos, y llevan a cabo las funciones limitadas de
poner en cola de espera las peticiones de impresión, ordenar a la impresora que
lleve a cabo el proceso de impresión e informar a las computadoras cliente que
ya ha finalizado una petición de impresión en particular.
Software
intermedio (middleware)
Hasta el momento probablemente ya tenga la impresión de que la comunicación entre cliente y servidor es directa. Desgraciadamente, esto no es verdad: normalmente existe por lo menos una capa de software entre ellos. Esta capa se llama software intermedio (middleware).
Arquitectura cliente – servidor
- Los servidores son mecanismo de acceso a recursos compartidos.
- Mayor flexibilidad para aplicaciones que implementan nuevas funcionalidades.
Ejemplos:
Servidores de bases de datos o servidores de ficheros.
Clientes ligeros /
Servidores pesados: La mayor parte de la
funcionalidad se implementa en los servidores.
- Incrementar la reusabilidad del código.
- Son más fáciles de desplegar y administrar.
- Se basan en servidores más abstractos que reducen el flujo por la red.
- En vez de proporcionar datos, exportan procedimientos.