Llamadas asíncronas vs síncronas vs cliente-servidor
Clase 27 de 43 • Curso Profesional de Arquitectura de Software
Contenido del curso
Atributos de calidad
- 2

Qué son los atributos de calidad en software
01:49 min - 3

Cómo medir idoneidad funcional en software
02:52 min - 4

Qué es eficiencia de ejecución en software
04:14 min - 5

Cómo medir interoperabilidad y coexistencia
03:49 min - 6

Qué es la usabilidad y sus 6 dimensiones
08:14 min - 7

Cómo medir confiabilidad en software
05:38 min - 8

Los 5 pilares de seguridad en software
04:01 min - 9

Cómo garantizar mantenibilidad con tests
06:27 min - 10

Adaptabilidad vs capacidad de instalación vs reemplazo
02:48 min - 11

Tensiones entre atributos de calidad de software
04:04 min - 12

Atributos de calidad según fase de empresa
07:00 min
Patrones de arquitectura
- 13

Qué es un patrón de arquitectura
02:50 min - 14

Modelo vista controlador: cómo separar responsabilidades
05:37 min - 15

Arquitectura en capas: controller, servicio y repositorio
03:14 min - 16

Event sourcing vs bases relacionales
06:17 min - 17

Qué es la arquitectura microkernel
01:52 min - 18

Arquitectura Comparte Nada con Map Reduce
02:29 min - 19

Patrón de microservicios: cuándo y cómo
03:57 min - 20

Qué es CQRS y cómo separa lectura de escritura
03:24 min - 21

Arquitectura hexagonal: puertos y adaptadores
04:10 min - 22

Qué son los contextos delimitados en DDD
05:34 min - 23

Cómo combinar patrones de arquitectura
09:22 min - 24

Evolución de patrones desde monolito a microservicios
07:58 min
Diseño de una arquitectura
- 25

Cómo traducir requerimientos en decisiones arquitectónicas
02:18 min - 26

Conectores en arquitectura: tipos y cuándo usarlos
06:18 min - 27

Llamadas asíncronas vs síncronas vs cliente-servidor
Viendo ahora - 28

Conector enrutador vs difusión: Twitter
01:55 min - 29

Conectores cola, repositorio y pub/sub
03:52 min - 30

Framework de diseño orientado a atributos
01:55 min - 31

Cómo detectar fallas y reparar sistemas
05:59 min - 32

Cómo recuperar y prevenir fallas en sistemas
04:09 min - 33

Tácticas para confinar modificaciones
06:15 min - 34

Cómo prevenir efectos dominó en software
12:17 min - 35

Tácticas para controlar eficiencia de ejecución
09:14 min - 36

Cómo detectar, resistir y recuperarse de ataques
09:02 min - 37

Cómo probar que el software funciona correctamente
05:14 min - 38

Cómo controlar la usabilidad con tácticas
08:20 min - 39

Cómo validar arquitectura con ATAM y métricas
06:34 min - 40

Evolución de arquitectura: startup a gran escala
10:30 min
Modelado y documentación de arquitectura
Entiende con claridad cuándo elegir llamado asíncrono, llamado sincrónico o un conector cliente-servidor. Aquí se explica cómo se comportan, qué implican en la ejecución y por qué se usan en aplicaciones móviles y web modernas, sin teorías extra ni rodeos.
¿Qué es un llamado asíncrono y cuándo usarlo?
Un componente invoca a otro, sabe a quién llama, pero no espera el resultado: continúa trabajando y evalúa la respuesta más tarde. Es común en sistemas desconectados, como una app móvil o una app web tipo React o Angular, que hacen un pedido y lo procesan cuando lo necesitan.
- El emisor no se bloquea: sigue ejecutando su lógica.
- Se evalúa el resultado en otro momento.
- Típico en apps móviles y web con UI reactiva.
- Útil cuando la disponibilidad de red es variable.
¿Cómo se gestiona la respuesta con promesas o futuros?
Se usan promesas o futuros: estructuras que representan un resultado pendiente y permiten evaluarlo posteriormente. El objetivo es separar la invocación de la consumición del resultado, manteniendo fluidez en la ejecución.
- Promesas: modelo para registrar la respuesta cuando llegue.
- Futuros: objeto que encapsula el valor que estará disponible después.
¿Dónde aparece en aplicaciones móviles y web?
En apps móviles y frontends web como React o Angular, se realizan pedidos asíncronos al backend y se procesan al necesitar la información.
- Ejemplo típico: carga de datos sin bloquear la interfaz.
- Beneficio clave: mejor experiencia del usuario.
¿Cómo funciona un llamado sincrónico en objetos y procedimientos?
En el llamado sincrónico, el emisor espera la respuesta del receptor y no continúa hasta recibirla. Es el comportamiento natural en lenguajes procedurales y orientados a objetos.
- El control de ejecución se transfiere al receptor.
- La ejecución vuelve cuando el receptor termina.
- Es el modelo por defecto en muchos lenguajes.
¿Qué implica delegar ejecución entre objetos?
Al invocar un método de otro objeto, se delegan la responsabilidad y la ejecución. Hasta que ese método no finaliza, el objeto original no recupera el control.
- Secuencia clara: invocar, ejecutar, devolver control.
- Facilita trazabilidad y razonamiento paso a paso.
¿Se puede evitar el bloqueo con hilos?
Sí: algunos lenguajes permiten abrir un hilo separado para evitar el bloqueo. Aun así, el comportamiento natural del modelo sigue siendo sincrónico.
- Hilos: alternativa controlada al bloqueo.
- Precaución: añade complejidad en coordinación.
¿Qué define el conector cliente-servidor y cómo resuelve el servidor?
En el conector cliente-servidor hay dos roles: un componente actúa como cliente y otro como servidor. La comunicación va del cliente al servidor y el cliente espera la respuesta. Su foco no es tanto síncrono o asíncrono, sino cómo se distribuyen los componentes.
- Los componentes pueden vivir en ecosistemas distintos.
- El cliente puede no conocer de antemano al servidor.
- Se apoya en protocolos para ubicar el servidor.
¿Cómo ayuda DNS a encontrar el servidor?
En Internet, se usa DNS para resolver un nombre a una o más IP de servidores. Esas IP pueden no ser el destino final: pueden existir capas internas que distribuyen la carga en múltiples servidores.
- Resolución de nombres a IP.
- Posibles capas de distribución de carga.
- Mayor escalabilidad y disponibilidad.
¿Por qué cliente-servidor trata sobre distribución?
Porque enfatiza la separación de roles y la ubicación dinámica del servidor. El cliente puede descubrir el servidor mediante protocolos, y el despliegue puede incluir múltiples niveles para balancear tráfico.
- Descubrimiento del servidor en tiempo de ejecución.
- Componentes sin necesidad de convivir en el mismo entorno.
¿Con qué tipo de conector trabajas más y por qué? Comparte tu experiencia y ejemplos en los comentarios.