Uno de los mayores puntos de dolor que he vivido con los frameworks web modernos es la combinación de lógica asíncrona y enlaces reactivos. Trabajar con código asíncrono que depende de forma indirecta de datos reactivos externos es manejable, aunque puede ser engorroso. Pero en cuanto intentas rastrear dependencias reactivas anidadas dentro de llamadas asíncronas, probablemente quieras rellenar la taza de café primero.
El café ayuda, pero prefiero apoyarme en un enfoque técnico más flexible.
Concepto central: una solución directa para rastrear dependencias dentro de funciones asíncronas es pasar un contexto de ejecución. Normalmente, las dependencias reactivas se rastrean mediante mecanismos implícitos, lo cual simplifica el uso pero ofrece un control limitado y no encaja bien con la lógica asíncrona. Exigir un contexto explícito es menos cómodo en casos sencillos, pero aporta mucho valor cuando las cosas se complican.
Un contexto explícito te da control total sobre qué dependencias se rastrean y además funciona bien con la ejecución asíncrona. También permite definir disparadores personalizados para actualizar los enlaces sin recurrir a contadores reactivos ni soluciones de fortuna.
Aun así, tener que pasar el contexto en todas partes puede resultar tedioso. La solución real llega con otra capa.
Otra capa: para que este enfoque brille, conviene añadir una capa de abstracción adicional. Y ya que estamos, por qué no simplificar la ejecución asíncrona de forma más fundamental definiendo la funcionalidad de alto nivel de manera declarativa. Al trabajar con capacidades avanzadas no deberíamos preocuparnos de si un método es síncrono o asíncrono. Cambiar de sync a async no debería romper nada, simplemente debería funcionar.
Imagina el ejemplo clásico del calendario de usuario definido como servicio low code: un método getUserEvents que invoca al proveedor de calendarios getEvents, pasando como parámetro calendar el resultado de getUserCalendar en función del userId reactivo, y el parámetro date leyendo el valor reactivo de la fecha actual. Los enlaces declaran de dónde proviene cada parámetro y el motor, bajo el capó, se encarga de pasar el contexto de ejecución y rastrear las dependencias incluso a través de las llamadas asíncronas.
Este tipo de abstracción permite un seguimiento implícito de dependencias manteniendo las ventajas de un contexto de ejecución explícito internamente. Editar definiciones a mano puede ser pesado, pero con un buen IDE visual low code puede convertirse en una alternativa poderosa a los frameworks basados en código para muchos casos de uso.
Qué opinas. Te plantearías usar un enfoque low code para manejar la ejecución asíncrona de forma más simple y transparente.
En Q2BSTUDIO, empresa de desarrollo de software, construimos aplicaciones a medida y software a medida con arquitecturas reactivas y asíncronas listas para producir. Integramos inteligencia artificial e ia para empresas con agentes IA, reforzamos ciberseguridad mediante pentesting, desplegamos soluciones con servicios cloud aws y azure, impulsamos analítica con servicios inteligencia de negocio y power bi, y aceleramos la entrega con automatización de procesos. Si estás pensando en evolucionar tu stack hacia una reactividad explícita y un modelo declarativo que escale, podemos ayudarte a convertirlo en soluciones reales y robustas.
Descubre cómo transformamos tu producto con desarrollo de aplicaciones y software a medida y lleva tu orquestación asíncrona al siguiente nivel con nuestra automatización de procesos.