Asynchrone Warteschlange zwischen Datenbank und Browser

Ich kenne Python und Datenbanken sehr gut. Aber ich möchte meine begrenzten JavaScript-Kenntnisse verbessern.

Für mein Spielzeugprojekt möchte ich eine asynchrone Warteschlange im Webbrowser verwenden .

In Python gibt es eine schöne Bibliothek, die ich mit Multiprocessing verwendet habe: https://docs.python.org/2/library/queue.html

Jetzt suche ich so etwas, aber es muss im Browser laufen.

async-queue-js

Schritt 1: Die Eingangswarteschlange zieht Arbeitselemente (rosa Kreise). Nur ein paar JSON-Bytes.

Schritt 2: Der Benutzer verarbeitet die Daten.

Schritt 3: Die Out-Queue sorgt dafür, dass das Ergebnis an den Server gesendet wird.

Warum diese "komplizierte" Einrichtung? Weil ich möchte, dass die Anwendung so reaktionsschnell wie möglich ist. Die Eingangswarteschlange sollte einige Daten vorab laden und die Ausgangswarteschlange sollte die Antwortkommunikation handhaben.

Ein weiterer Vorteil ist, dass die Anwendung mit diesem Setup Server- oder Netzwerkausfälle für einen Zeitraum von einigen Minuten bewältigen kann.

Welche JS-Bibliotheken könnten verwendet werden? Ich ziehe es vor, eine vorhandene Bibliothek wiederzuverwenden.

Antworten (1)

Was Sie verlangen, ist heutzutage in der JS-Welt als Zwei-Wege-Datenbindung bekannt . Es gibt mehrere bekannte JS-Frameworks, die diese Art von Funktionen mehr oder weniger automatisch bereitstellen. Ich werde sie mit zunehmender Komplexität auflisten, damit die am einfachsten zu erlernenden zuerst kommen. Beachten Sie, dass sie natürlich nicht die stärksten sind.

Dann gibt es noch einen kritischen Punkt Ihres Setups, der im Allgemeinen nicht trivial gelöst ist: das Vorladen. Diese Funktion wird von keinem Framework außer Meteor standardmäßig bereitgestellt ! Sogar in Meteor müssen Sie entscheiden, was (vor)geladen wird, indem Sie das Publish - Subscribe -Muster verwenden. In anderen Frameworks müssen Sie nach Best-Practice-Lösungen suchen, um Daten unsichtbar vorab zu laden, aber es ist sicherlich machbar.

  • Knockout.js / Backbone.js : beides bekannte und nicht zu schwere Frontend-Frameworks.
  • Angular.js / Ember.js : wieder beide bekannt. Ember wird besser gewartet, in dem Sinne, dass das Angular-Team jegliche Abwärtskompatibilität mit dem bald erscheinenden Angular2 aufgeben wird.
  • Meteor.js : Das ist eine andere Geschichte. Meteor kommt mit einem nie zuvor kombinierten Satz sehr leistungsfähiger Funktionen, ist aber ein Full-Stack-Framework nur mit MongoDB (PostgreSQL kommt bald).
Ein persönlicher, eigensinniger Kommentar: In einer ähnlichen Situation wie Sie habe ich mich für Meteor entschieden. Heute würde ich sagen: Wählen Sie Meteor, wenn und nur wenn Sie dabei sind, eine dialog-/seitenorientierte Benutzeroberfläche mit wenig Querverweisen im Datenmodell zu implementieren. Wenn Sie ein verworrenes, stark relationales Datenmodell und eine entsprechend verworrene Benutzeroberfläche haben, wählen Sie separate Tools.