14 KiB
Bloque 3 · Tema 6
Arquitectura cliente/servidor y multicapas. Servicios web y protocolos.
Esquema resumen
Modelos arquitectónicos
| Modelo | Descripción | Característica clave |
|---|---|---|
| Cliente/servidor | Cliente solicita, servidor responde | Separación de roles |
| 2 capas | Cliente + servidor | Cliente pesado o ligero |
| 3 capas | Presentación + lógica + datos | Forma más habitual |
| N capas | Multicapas con capa de servicios o integración | Aplicaciones complejas |
Servicios web
| Tecnología | Tipo | Formato | Descripción |
|---|---|---|---|
| SOAP | Protocolo | XML | Formal, contrato WSDL, empresarial |
| REST | Estilo arquitectónico | JSON | Ligero, verbos HTTP, API modernas |
| GraphQL | Lenguaje de consulta | JSON | Cliente define qué campos necesita |
| gRPC | Protocolo RPC | Protobuf | Alta eficiencia, microservicios |
| WebSocket | Protocolo bidireccional | Cualquiera | Tiempo real, persistente |
Protocolos principales
| Protocolo | Capa | Función |
|---|---|---|
| HTTP/HTTPS | Aplicación | Petición/respuesta web; HTTPS cifra con TLS |
| TCP | Transporte | Entrega fiable y ordenada |
| IP | Red | Direccionamiento y enrutamiento |
| TLS | Sesión/Presentación | Cifrado del canal; sucesor de SSL |
| DNS | Aplicación | Resolución de nombres a IPs |
| FTP | Aplicación | Transferencia de ficheros |
| SMTP | Aplicación | Envío de correo electrónico |
1. Arquitectura cliente/servidor
1.1. Definición y elementos
La arquitectura cliente/servidor es el modelo fundamental de distribución de aplicaciones. Un cliente realiza peticiones de servicios o recursos, y un servidor los proporciona. Ambos se comunican a través de una red.
Sus características principales son:
- Separación de funciones: el cliente gestiona la presentación; el servidor gestiona los datos y la lógica.
- Centralización de recursos: los recursos compartidos (BD, ficheros, servicios) están en el servidor.
- Escalabilidad: se pueden añadir más servidores o clientes sin reestructurar la arquitectura.
- Heterogeneidad: cliente y servidor pueden usar plataformas distintas si se comunican mediante protocolos estándar.
1.2. Tipos de cliente
| Tipo | Descripción | Ejemplo |
|---|---|---|
| Cliente pesado (thick/fat client) | Mayor parte de la lógica en el cliente; el servidor solo aporta datos | Aplicación de escritorio con BD remota |
| Cliente ligero (thin client) | Casi toda la lógica en el servidor; el cliente solo gestiona la presentación | Navegador web con servidor de aplicaciones |
| Cliente mixto | Reparte la lógica entre cliente y servidor | SPA (Angular/React) con API REST |
Los clientes ligeros son los más habituales en entornos empresariales actuales porque facilitan el mantenimiento centralizado.
2. Arquitectura multicapas (n-tier)
2.1. Capas principales
La arquitectura multicapas divide la aplicación en capas independientes, cada una con una responsabilidad bien definida. La separación de responsabilidades facilita el mantenimiento, la escalabilidad y la reutilización.
Tres capas clásicas:
| Capa | Responsabilidad | Tecnologías típicas |
|---|---|---|
| Presentación | Interfaz de usuario | HTML/CSS/JS, Thymeleaf, React, Angular |
| Lógica de negocio | Procesamiento y reglas de la aplicación | Java EE, Spring, .NET |
| Datos | Persistencia y acceso a la BD | JDBC, JPA, SQL, ORM |
Capas adicionales:
- Capa de servicios: expone funcionalidad como servicios web (REST/SOAP).
- Capa de integración: adapta la comunicación con sistemas externos.
- Middleware: software intermediario que actúa entre capas (MOM, ESB).
Ventajas:
- Modularidad: cada capa puede desarrollarse y desplegarse de forma independiente.
- Mantenimiento: los cambios en una capa no afectan a las demás si se respeta el contrato.
- Escalabilidad: se puede escalar cada capa de forma independiente.
- Seguridad: las capas actúan como barreras entre el exterior y los datos.
2.2. Relación con cliente/servidor
Cliente/servidor y multicapas no son excluyentes: un sistema puede ser cliente/servidor (dos extremos que se comunican) y a la vez estar organizado en múltiples capas internamente.
| Concepto | Alcance |
|---|---|
| Cliente/servidor | Modelo general de comunicación entre dos extremos |
| Multicapas | Organización interna de la aplicación |
Un navegador web actúa de cliente; el back-end (organizado en 3 capas) actúa de servidor.
3. Comunicación síncrona y asíncrona
3.1. Comunicación síncrona
En la comunicación síncrona el cliente envía una petición y queda bloqueado hasta recibir la respuesta del servidor. Es el modelo clásico de HTTP.
| Aspecto | Detalle |
|---|---|
| Comportamiento | Bloqueante: el cliente espera |
| Modelo | Petición → bloqueo → respuesta |
| Ejemplo | Navegador solicita una página; espera la respuesta |
| Ventaja | Simplicidad, fácil de implementar y depurar |
| Inconveniente | Bloqueo; menor rendimiento en alta concurrencia |
3.2. Comunicación asíncrona y colas de mensajes
En la comunicación asíncrona el cliente envía una petición y no bloquea: puede seguir ejecutando otras tareas. La respuesta llega posteriormente mediante un callback, un evento o una cola de mensajes.
| Aspecto | Detalle |
|---|---|
| Comportamiento | No bloqueante |
| Mecanismos | Callbacks, eventos, colas de mensajes, WebSocket |
| Ventaja | Mayor escalabilidad y rendimiento |
| Inconveniente | Mayor complejidad; gestión de estado más difícil |
Sistemas de colas de mensajes (MOM — Message-Oriented Middleware):
- JMS (Java Message Service): API estándar de Jakarta EE para mensajería asíncrona.
- RabbitMQ: broker de mensajes con soporte AMQP.
- Apache Kafka: plataforma de streaming de eventos de alto rendimiento.
Los patrones de mensajería más comunes son:
- Punto a punto (Queue): un productor envía a una cola; un consumidor la lee.
- Publicación/suscripción (Topic): un productor publica en un topic; múltiples consumidores suscritos lo reciben.
Clave de examen: HTTP es síncrono; microservicios y arquitecturas de eventos combinan síncrono y asíncrono; la asincronía es fundamental para la escalabilidad.
4. Servicios web
4.1. SOAP
SOAP (Simple Object Access Protocol) es un protocolo de comunicación entre aplicaciones basado en XML. Es el modelo clásico de servicios web empresariales.
| Elemento | Descripción |
|---|---|
| SOAP | Protocolo de mensajería en XML |
| WSDL | Web Services Description Language; describe la interfaz del servicio (operaciones, parámetros, tipos) en XML |
| UDDI | Universal Description, Discovery and Integration; registro para descubrir servicios web |
| WS-Security | Extensión de seguridad: cifrado, firma y autenticación a nivel de mensaje |
Estructura de un mensaje SOAP:
- Envelope: elemento raíz obligatorio.
- Header: cabeceras opcionales (seguridad, transacciones).
- Body: contenido del mensaje (petición o respuesta).
- Fault: información de error.
Características:
- Protocolo formal y estricto.
- Independiente del transporte (puede ir sobre HTTP, SMTP, TCP).
- Soporte nativo para transacciones distribuidas y seguridad a nivel de mensaje.
- Adecuado para integraciones B2B y entornos que requieren contratos formales.
4.2. REST
REST (Representational State Transfer) es un estilo arquitectónico, no un protocolo. Lo definió Roy Fielding en su tesis doctoral de 2000. Una API que cumple los principios REST se denomina RESTful.
Principios REST (restricciones):
| Principio | Descripción |
|---|---|
| Sin estado (stateless) | Cada petición contiene toda la información necesaria; el servidor no guarda estado de sesión |
| Interfaz uniforme | Recursos identificados por URI; representaciones estándar (JSON, XML) |
| Sistema en capas | El cliente no sabe si hay intermediarios (proxy, caché, balanceador) |
| Caché | Las respuestas pueden ser cacheables para mejorar el rendimiento |
| Cliente/servidor | Separación clara entre cliente y servidor |
| Código bajo demanda (opcional) | El servidor puede enviar código ejecutable al cliente (JS) |
Verbos HTTP en REST:
| Verbo | Operación CRUD | Ejemplo |
|---|---|---|
| GET | Read (lectura) | GET /usuarios/1 → obtener usuario 1 |
| POST | Create (creación) | POST /usuarios → crear usuario |
| PUT | Update completo | PUT /usuarios/1 → reemplazar usuario 1 |
| PATCH | Update parcial | PATCH /usuarios/1 → modificar campo |
| DELETE | Delete | DELETE /usuarios/1 → eliminar usuario 1 |
Códigos de estado HTTP:
| Rango | Categoría | Ejemplos |
|---|---|---|
| 2xx | Éxito | 200 OK, 201 Created, 204 No Content |
| 3xx | Redirección | 301 Moved Permanently, 304 Not Modified |
| 4xx | Error del cliente | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found |
| 5xx | Error del servidor | 500 Internal Server Error, 503 Service Unavailable |
Diferencias SOAP vs REST:
| Aspecto | SOAP | REST |
|---|---|---|
| Tipo | Protocolo | Estilo arquitectónico |
| Formato | XML obligatorio | JSON (principalmente), XML, otros |
| Contrato | WSDL | OpenAPI/Swagger (recomendado) |
| Transporte | HTTP, SMTP, TCP... | HTTP/HTTPS |
| Estado | Puede ser con estado | Sin estado (stateless) |
| Uso | Empresarial, B2B, legado | APIs modernas, microservicios, móvil |
4.3. Otras arquitecturas de servicios
GraphQL:
- Desarrollado por Meta (Facebook) en 2015.
- El cliente especifica exactamente qué campos necesita: evita el overfetching (recibir más datos de los necesarios) y el underfetching (necesitar múltiples llamadas).
- Una única URL de endpoint; las consultas se envían como
queryen el cuerpo de la petición. - Adecuado para aplicaciones con clientes variados (web, móvil) que necesitan datos distintos.
gRPC:
- Desarrollado por Google; usa HTTP/2 y Protocol Buffers (Protobuf) como formato binario.
- Muy eficiente y de bajo latencia; adecuado para comunicación entre microservicios internos.
- Los contratos se definen en ficheros
.proto. - Admite streaming bidireccional.
WebSocket:
- Protocolo que establece una conexión persistente y bidireccional entre cliente y servidor sobre TCP.
- A diferencia de HTTP (sin estado, petición/respuesta), la conexión se mantiene abierta.
- Usos típicos: chat en tiempo real, notificaciones push, juegos online, dashboards en vivo.
5. Protocolos asociados
5.1. HTTP/HTTPS
HTTP (HyperText Transfer Protocol) es el protocolo de la capa de aplicación que define cómo se comunican cliente y servidor en la web. Opera sobre TCP.
| Versión | Características clave |
|---|---|
| HTTP/1.1 | Conexiones persistentes; pipeline; cabeceras en texto |
| HTTP/2 | Multiplexación de streams; cabeceras comprimidas (HPACK); mayor rendimiento |
| HTTP/3 | Basado en QUIC (UDP); menor latencia; conexiones más rápidas |
Cabeceras HTTP relevantes:
Content-Type: tipo MIME del cuerpo (application/json, text/html).Authorization: credenciales (Bearer token, Basic auth).Cache-Control: directivas de caché.Cookie/Set-Cookie: gestión de sesiones.
HTTPS = HTTP + TLS. Garantiza confidencialidad (cifrado), integridad (no manipulación) y autenticación del servidor (certificado).
5.2. TCP/IP y SSL/TLS
TCP/IP es el conjunto de protocolos base de internet. Corresponde a las capas 3 y 4 del modelo OSI.
| Protocolo | Capa | Función |
|---|---|---|
| IP | Red (3) | Direccionamiento y enrutamiento de paquetes |
| TCP | Transporte (4) | Transmisión fiable, orientada a conexión, ordenada |
| UDP | Transporte (4) | Transmisión no fiable, sin conexión, más rápida |
TCP garantiza la entrega mediante el mecanismo de three-way handshake (SYN, SYN-ACK, ACK) y la retransmisión de paquetes perdidos. HTTP, HTTPS, FTP y SMTP usan TCP. DNS y algunos servicios de streaming usan UDP.
TLS (Transport Layer Security) es el protocolo que proporciona seguridad en la comunicación:
- Confidencialidad: cifrado asimétrico para el intercambio de claves, simétrico para el flujo de datos.
- Integridad: MAC (Message Authentication Code) para detectar modificaciones.
- Autenticación: certificados X.509 firmados por una CA (Autoridad Certificadora).
TLS 1.2 y TLS 1.3 son las versiones actuales; SSL está obsoleto y no debe usarse.
5.3. Otros protocolos de aplicación
| Protocolo | Puerto | Función |
|---|---|---|
| FTP | 21 (control), 20 (datos) | Transferencia de ficheros |
| SFTP | 22 | FTP seguro sobre SSH |
| SMTP | 25 / 587 | Envío de correo electrónico |
| IMAP | 143 / 993 | Acceso a buzón de correo (sincronizado) |
| POP3 | 110 / 995 | Descarga de correo (local) |
| DNS | 53 | Resolución de nombres de dominio a IPs |
| LDAP | 389 / 636 | Directorio de usuarios (Active Directory) |
| SSH | 22 | Acceso remoto seguro a servidores |
Miniresumen final del tema
| Concepto | Clave |
|---|---|
| Cliente/servidor | Cliente solicita, servidor responde; comunicación por red |
| Cliente pesado | Lógica en el cliente |
| Cliente ligero | Lógica en el servidor; ej. navegador |
| Multicapas (3 capas) | Presentación + lógica de negocio + datos |
| Comunicación síncrona | Bloqueante; modelo HTTP clásico |
| Comunicación asíncrona | No bloqueante; colas JMS, RabbitMQ, Kafka |
| SOAP | Protocolo; XML; WSDL; formal; empresarial |
| REST | Estilo arquitectónico; JSON; verbos HTTP; stateless |
| GraphQL | Cliente define los campos que necesita; Meta |
| gRPC | RPC binario (Protobuf); HTTP/2; microservicios |
| WebSocket | Bidireccional; tiempo real; conexión persistente |
| HTTP | Protocolo web; petición/respuesta; sobre TCP |
| HTTPS | HTTP + TLS; cifrado, integridad, autenticación |
| TLS | Seguridad del canal; sucesor de SSL |
| TCP | Transporte fiable y ordenado |