Cola asíncrona entre la base de datos y el navegador

Conozco muy bien Python y las bases de datos. Pero quiero mejorar mi conocimiento limitado de JavaScript.

Para mi proyecto de juguete, quiero usar una cola asíncrona en el navegador web.

En python hay una buena biblioteca que utilicé con multiprocesamiento: https://docs.python.org/2/library/queue.html

Ahora busco algo como esto, pero necesita ejecutarse en el navegador.

async-queue-js

Paso 1: El en cola extrae elementos de trabajo (círculos rosas). Solo una vista de bytes json.

Paso 2: El Usuario procesa los datos.

Paso 3: La cola de salida se preocupa por enviar el resultado al servidor.

¿Por qué esta configuración "complicada"? Porque quiero que la aplicación sea lo más receptiva posible. El que está en cola debe precargar algunos datos y el que está fuera de cola debe manejar la comunicación de respuesta.

Otro beneficio es que con esta configuración, la aplicación puede manejar la interrupción del servidor o de la red durante un período de algunos minutos.

¿Qué bibliotecas JS podrían usarse? Prefiero reutilizar una biblioteca existente.

Respuestas (1)

Lo que está solicitando se conoce hoy en día en el mundo JS como enlace de datos bidireccional . Hay varios marcos JS bien conocidos que proporcionan este tipo de funciones de forma más o menos automática. Los enumeraré con una complejidad creciente, de modo que los más simples de aprender sean los primeros. Tenga en cuenta que, por supuesto, no son los más poderosos.

Luego, hay un punto crítico de su configuración que no se resuelve trivialmente en general: la precarga. Esta función no se proporciona de forma predeterminada en ningún marco, ¡ excepto Meteor ! Incluso en Meteor tendrás que decidir qué está (pre)cargado usando el patrón de publicación - suscripción . En otros marcos, tendrá que investigar soluciones de mejores prácticas sobre cómo precargar datos de manera invisible, pero ciertamente es factible.

  • Knockout.js / Backbone.js : marcos frontend bien conocidos y no demasiado pesados.
  • Angular.js / Ember.js : nuevamente ambos bien conocidos. Ember se mantiene mejor, en el sentido de que el equipo de Angular eliminará toda la compatibilidad con versiones anteriores del próximo Angular2.
  • Meteor.js : esta es una historia diferente. Meteor viene con un conjunto nunca antes combinado de características muy poderosas, pero es un marco de trabajo completo con MongoDB únicamente (PostgreSQL próximamente disponible).
Un comentario personal y obstinado: estando en una situación similar a la tuya, decidí ir con Meteor. Hoy diría: elija Meteor si y solo si está a punto de implementar una interfaz de usuario orientada a diálogos/páginas con pocas referencias cruzadas en el modelo de datos. Si tiene un modelo de datos enrevesado y fuertemente relacional y una interfaz de usuario enrevesada en consecuencia, elija herramientas separadas.