miércoles, 14 de noviembre de 2012

Cliente – Servidor


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.

Servidores de correo. Un servidor de correo gestiona el envío y recepción de correo de un grupo de usuarios. Para este servicio normalmente se utiliza un PC de rango medio. Existen varios protocolos para el correo electrónico. Un servidor de correo estará especializado en utilizar solo uno de ellos.







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


Clientes pesados / Servidores ligeros: La mayor parte de la funcionalidad  de la aplicación se implementa en el cliente. 
  • 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.



„       Ejemplos: Servidores de transacciones y servidores web.