La arquitectura cliente-servidor llamado modelo cliente-servidor o servidor-cliente es una forma de dividir y especializar programas y equipos de cómputo a fin de que la tarea que cada uno de ellos realiza se efectúe con la mayor eficiencia, y permita simplificarlas.
En esta arquitectura la capacidad de proceso está repartida entre el servidor y los clientes.
En la funcionalidad de un programa distribuido se pueden distinguir 3 capas o niveles:
1. Manejador de Base de Datos (Nivel de almacenamiento),
2. Procesador de aplicaciones o reglas del negocio (Nivel lógico) y
3. Interface del usuario (Nivel de presentación).
En una arquitectura monolítica no hay distribución; los tres niveles tienen lugar en el mismo equipo.
En un comienzo, los mainframes concentraban la funcionalidad de almacenamiento (#1) y lógica (#2) y a ellos se conectaban terminales tontas, posiblemente ubicadas en sitios remotos.
En el modelo cliente-servidor, en cambio, el trabajo se reparte entre dos ordenadores. De acuerdo con la distribución de la lógica de la aplicación hay dos posibilidades:
1. Cliente liviano: si el cliente solo se hace cargo de la presentación.
2. Cliente pesado: si el cliente asume también la lógica del negocio.
En la actualidad se suele hablar de arquitectura de tres niveles, donde la capa de almacenamiento y la de aplicación se ubican en (al menos) dos servidores diferentes, conocidos como servidores de datos y servidores de aplicaciones.
--------------------------------------
Ventajas de la arquitectura cliente-servidor
El servidor no necesita tanta potencia de procesamiento; parte del proceso se reparte con los clientes.
Se reduce el tráfico de red considerablemente. Idealmente, el cliente se conecta al servidor cuando es estrictamente necesario, obtiene los datos que necesita y cierra la conexión dejando la red libre. Este modelo de interfaz de programación proliferó especialmente a inicios de los 90, cuando los recursos de internet llegaron a ser tal como los conocemos hoy en lo que respecta a funcionalidad y potencial.
Conceptualmente el modelo cliente-servidor es bastante simple. Consiste en una interacción entre 2 programas que forman un todo. Una de las partes funciona como el servidor, el cual toma las peticiones del cliente y regresa una respuesta de error o el contenido que el cliente requiere.
La parte del cliente es la que requiere del servidor un recurso, y para ello envía una petición consistente a un canal del servidor. Siempre y cuando el cliente esté autorizado a efectuar ciertas peticiones al servidor, este responderá entregando los resultados esperados.
El modelo cliente-servidor no es exclusivo a Internet. Muchos programas en una misma computadora usan este modelo de interacción para preservar los privilegios sobre el control del sistema a un nivel en el que un solo programa no monopolice y desestabilice el resto del sistema.
Un ejemplo de modelo cliente-servidor localizado es la de las interfaces gráficas modernas, como la del Servidor X (XFree86) de Linux. Este es el que realmente recoge todas las acciones que el usuario efectúa entre los distintos programas, como clicks del mouse, interacción con el teclado, manejo de ventanas y botones. La interfaz gráfica es la que realmente recoge estas señales y las interpreta para manejar correctamente el programa al que originalmente eran enviados.
En este modelo, en ningún caso se permite tomar control directamente de la pantalla por parte de ningún programa. La interfaz gráfica es el servidor que recoge las peticiones de interfaz y despliegue de los programas, y todos estos programas son realmente clientes de la interfaz gráfica.