/redux-en-web-worker

Pruebas de concepto para usar Redux en un Web Worker

Prueba de concepto para utlizar Redux en un hilo diferente (Web Worker)

Esta prueba de concepto plantea la comunicación con un Store enbebido dentro de un hilo diferente al principal del navegador.

Motivación

Mi motivación principal es dejar el hilo principal sólo para tareas relacionadas con el DOM y mantener hilos diferentes para gestionar los datos.

Redux diferencia muy bien estos dos tipos de tareas; por lo que me parece buen punto de partida para plantear una solución multi hilos utilizando Web Workers

Todo el trabajo de los reducers pertenecen a la capa de datos de nuestra aplicación y muchas veces consuemen demasiados recursos que limitan las capacidades del hilo principal del navegador. Por lo que moverlo a un hilo diferente me parece la manera adecuada de dar solución a este problema

Propuesta

Para poder ejecutar y trabajar con el Store (y todos sus reducers) planteo dos capas intermedias (StoreFront, StoreBack) para que normalizen el uso del API del Store y que sea lo más transparente para el desarrollador.

Comunicación

[app] <--> [StoreFront] <- |- postMessage -| -> [StoreBack] <--> [Store]

Ejemplos

Notas de interés

  • He tenido que meter una "solución táctica" para consumir Redux como módulo desde un CDN. ver solcuión
  • Redux implementa mecanismos de garantía al hora de obtener el estado en curso (da un error si se están ejucanto los reducers y se pide el estado). Con la comunicación actual, no estoy seguro de que se garantice esto.
  • Queda pendiente plantear una solución real. Esto implica ver como se pondría en producción este planteamiento; ya que tendrían que estar disponibles (en el servidor) para ser consumidos desde la aplicación.