Arquitectura Cliente Servidor - bleums/Redes-Comunicaciones GitHub Wiki

ARQUITECTURA CLIENTE/SERVIDOR

Cliente/Servidor es una arquitectura. Cliente/Servidor divide el procesamiento entre:

  • Un cliente, generalmente con GUI.
  • Un servidor, con la base de datos o aplicaciones.
  • El canal de comunicación.

Proceso Cliente

Actúa como front-end, solicitando desde el usuario, algún servicio al servidor. Sus responsabilidades son:

  • Manejo de la GUI
  • Validación de datos
  • Despacho de solicitudes a los servidores
  • Interfaz entre el usuario y la aplicación
  • Manejo de recursos locales en la estación de usuario

Proceso Servidor

Solo se ejecuta como respuesta a una solicitud de un cliente. Actúa como proceso back-end, sin necesidad de una GUI. Sus responsabilidades son:

  • Recepción de solicitudes
  • Ejecución de solicitudes
  • Despacho de solicitudes
  • Manejo de la lógica del negocio común
  • Back-end para tareas que resultan comunes para aplicaciones similares

Algunos tipos de sistemas Cliente/Servidor son:

  • Servidores de impresión
  • Servidores de archivo, los usuarios comparten disco duro
  • Servidores de Bases de Datos
  • Servidores de groupware
  • Servidores web

Tipos de arquitecturas Cliente/Servidor

Arquitectura de dos niveles

Existe comunicación directa entre el cliente y el servidor.

Una aplicación contiene 3 componentes básicos:

  • Presentación
  • Procesamiento
  • Datos Estos componentes suelen dividirse en dos entidades software o niveles: Código Cliente de la Aplicación y Servidor de Bases de Datos.

Arquitectura en tres niveles

La comunicación ocurre entre: Cliente, Agente y Servidor. Se divide en tres capas:

  • Presentación
  • Funcionalidad
  • Lógica de Datos

Las funciones del Agente son:

  • Actúa como Monitor de Transacciones limitando el número de solicitudes a un servidor.
  • Traslada solicitudes a los servidores
  • Recolecta resultados
  • Retorna la respuesta al cliente

Ventajas del Agente:

  • El cliente no requiere entender el "idioma" del servidor.
  • Los cambios en la estructura del back-end de datos no afectan la presentación de los clientes. Desventajas del Agente:
  • Es necesario realizar administrador sobre el tráfico de red, balanceo de carga del servidor y tolerancia a fallas.

Arquitectura de N-Niveles

La comunicación ocurre entre diferentes usuarios y servidores dispersos geográficamente. Aunque el usuario solo se comunica con un servidor.

Ventajas y desventajas de Cliente/Servidor

Ventajas

  • Sistema abierto
  • Heterogeneidad
  • Interoperabilidad
  • Escalabilidad
  • Adaptabilidad

Desventajas

  • Puede no ser la solución correcta para todo tipo de aplicaciones.
  • Costos inesperados.

Mecanismos involucrados en la interacción Cliente/Servidor

  1. Debe conocerse la dirección del Cliente y del Servidor.
  2. Se debe poder identificar al equipo receptor a través de uno de los dos procesos.
  3. Definir nivel de confianza para la comunicación.
  4. Si se va a utilizar un protocolo que requiera una comunicación continua y confiable entre emisor y receptor, se debe establecer el canal de comunicaciones que permita el flujo de datos entre ellos.
  5. Utilización o no de multihilos en la programación del servidor.

Puertos

Un puerto es un número, entre 0 y 65.536, que permite identificar a un proceso en un computador. Existen dos esquemas de asignación de puertos:

  • Asignación universal
  • Asignación dinámica

Sockets

Un socket es un "control de red". Se asocia con un número de puerto, para que el protocolo de transporte pueda identificar la aplicación a la cual se están enviando los datos. Una aplicación crea un socket al especificar tres elementos:

  • La dirección IP del equipo
  • El puerto que la aplicación esté utilizando
  • El tipo de servicio utilizado por la aplicación. Luego, la aplicación puede utilizar el socket para enviar datos a aplicaciones remotas utilizando un esquema orientado a conexión, para enviar datos de forma confiable.

Normalmente, en aplicaciones cliente/servidor se utilizan sockets a ambos lados de la comunicación.


Aplicaciones Cliente/Servidor con Java

Sockets en Java

Un objeto Socket es la representación Java de una conexión de red TCP. Para cliente se usa un objeto de la clase Socket, y para servidor se usa la clase ServerSocket.