## Bloque 3 Tema 6. Arquitectura cliente/servidor y multicapas. Servicios web y protocolos.

Este tema estudia los modelos arquitectónicos de las aplicaciones distribuidas, los servicios web y los protocolos de comunicación asociados.

---

## 1. Arquitectura cliente/servidor

La arquitectura cliente/servidor es el modelo fundamental de las aplicaciones distribuidas. En este modelo un cliente solicita servicios y un servidor los proporciona, comunicándose a través de una red.

Los elementos de esta arquitectura son tres: el cliente, que realiza las peticiones; el servidor, que responde y gestiona los recursos; y la red, que es el medio de comunicación entre ellos.

Las características principales son la separación de funciones entre cliente y servidor, la centralización de los recursos en el servidor, la escalabilidad y la comunicación a través de la red.

El modelo de dos capas es la forma básica. En el cliente pesado o thick client la mayor parte de la lógica reside en el cliente, que solo accede al servidor para los datos. En el cliente ligero o thin client casi toda la lógica está en el servidor y el cliente solo gestiona la presentación; un navegador web es el ejemplo más claro.

---

## 2. Arquitectura multicapas

La arquitectura multicapas o n-tier divide la aplicación en capas independientes, cada una con una responsabilidad específica. La separación de responsabilidades facilita el mantenimiento, la escalabilidad y la reutilización.

Las tres capas principales son las siguientes. La capa de presentación gestiona la interfaz de usuario. La capa de lógica de negocio contiene el procesamiento y las reglas de la aplicación. La capa de datos gestiona el acceso a la base de datos.

Se pueden añadir capas adicionales como la capa de servicios para la lógica de integración o la capa de middleware para intermediar entre componentes.

La relación entre ambos modelos es la siguiente: cliente/servidor es un modelo general que describe la interacción entre dos extremos; la arquitectura multicapas define la estructura interna de la aplicación. Un sistema puede ser cliente/servidor y además estar organizado en múltiples capas.

Los componentes en una arquitectura multicapas son el front-end en la capa de presentación, el back-end en la capa de lógica, la base de datos en la capa de datos y el middleware como elemento intermediario opcional.

---

## 3. Comunicación síncrona y asíncrona

La comunicación síncrona es el modelo clásico de HTTP: el cliente envía una petición y espera bloqueado hasta recibir la respuesta del servidor. Es simple de implementar pero bloquea al cliente durante la espera, lo que reduce el rendimiento en sistemas distribuidos.

La comunicación asíncrona no bloquea al cliente: envía la petición y puede seguir ejecutando otras tareas mientras la respuesta llega posteriormente mediante un callback, una cola de mensajes o un evento. Es más escalable y eficiente en sistemas distribuidos, aunque añade complejidad en la gestión del estado. Los sistemas de mensajería, las notificaciones push y los procesos en segundo plano son ejemplos típicos.

La clave para el examen es que HTTP tradicional es síncrono, mientras que las arquitecturas de microservicios y sistemas distribuidos modernos combinan ambos modelos. La asincronía es fundamental para la escalabilidad.

---

## 4. Servicios web

Los servicios web son la tecnología que permite la comunicación entre aplicaciones a través de una red, de forma independiente al lenguaje de programación y al sistema operativo. Sus características son la interoperabilidad, el uso de estándares abiertos y la comunicación a través de HTTP.

Existen dos grandes tipos de servicios web.

SOAP o Simple Object Access Protocol es el modelo clásico de servicios web. Usa XML tanto para los mensajes como para la descripción del servicio mediante WSDL, que es el Web Services Description Language. Es un protocolo formal y estricto. Sus mensajes son más pesados pero están muy bien estandarizados y son adecuados para entornos empresariales con requisitos de seguridad y transaccionalidad.

REST o Representational State Transfer es un estilo arquitectónico, no un protocolo, que usa HTTP directamente con sus métodos GET, POST, PUT y DELETE. Los datos se intercambian principalmente en formato JSON, aunque también se puede usar XML. Es más ligero, flexible y es el estándar en las APIs modernas. Es importante distinguir que REST no es un protocolo sino un estilo o conjunto de principios.

Las diferencias clave para el examen son las siguientes: SOAP es un protocolo y REST es un estilo arquitectónico; SOAP usa XML y REST usa principalmente JSON; SOAP es más pesado y formal y REST es más ligero y actual.

---

## 5. Protocolos asociados

HTTP o HyperText Transfer Protocol es el protocolo principal de la web. Sigue el modelo petición y respuesta. HTTPS añade cifrado mediante TLS para garantizar la confidencialidad e integridad de las comunicaciones.

TCP/IP es la base de todas las comunicaciones en red. TCP garantiza la entrega fiable y ordenada de los datos. IP se encarga del direccionamiento y el enrutamiento.

SSL y TLS son los protocolos de seguridad que proporcionan el cifrado. TLS es el sucesor de SSL; SSL está obsoleto.

Otros protocolos relevantes son FTP para la transferencia de ficheros, SMTP para el envío de correo electrónico y DNS para la resolución de nombres de dominio.

---

## Miniresumen final del tema

La arquitectura cliente/servidor separa el cliente que solicita y el servidor que responde. La arquitectura multicapas organiza la aplicación en capa de presentación, capa de lógica de negocio y capa de datos. La comunicación síncrona bloquea al cliente hasta la respuesta; la asíncrona no. Los servicios web SOAP usan XML y WSDL; REST usa HTTP y JSON. Clave de examen: REST es un estilo arquitectónico, no un protocolo. Los protocolos asociados son HTTP, HTTPS, TLS y TCP/IP.
