Ich werde ein Nebenprojekt starten, um eine "einzelne Seite" Webanwendung zu erstellen. Die Anwendung muss in Echtzeit ausgeführt werden und bei Änderungen Aktualisierungen an die Clients senden.
Gibt es gute Ressourcen für Best-Practice-Ansätze bezüglich der Architektur für diese Art von Anwendungen? Die beste Ressource, die ich bisher gefunden habe, ist der Artikel zur Trello-Architektur hier: http://blog.fogcreek.com/the-trello-tech-stack/
Für mich ist diese Architektur, obwohl sie sehr sexy ist, wahrscheinlich für meine spezifischen Bedürfnisse überentwickelt - obwohl ich ähnliche Anforderungen habe. Ich frage mich, ob ich mich um ein Sub / Pub auf der Serverseite kümmern muss. Könnte ich nicht einfach Updates vom Server pushen, wenn etwas passiert (zB wenn der Client ein Update an den Server sendet, schreibe das Update an die Datenbank, und dann ein Update an die Clients senden).
Technisch gesehen möchte ich dies wahrscheinlich in Node.JS oder vielleicht in Ruby ausbauen, obwohl die Architekturrichtlinien in gewissem Maße für alle zugrunde liegenden Servertechnologien gelten sollten.
quelle
Ich würde wahrscheinlich mit einem MV * Javascript Framework für das Frontend gehen. Ich selbst erstelle eine einseitige Webanwendung und nachdem ich eine Reihe von Lösungen untersucht habe, bin ich zu Backbone.js gekommen. Ich stellte fest, dass diese Lösung zwar nicht die meisten Standardfunktionen bietet, aber zunächst eine zentrale Grundlage bietet und wesentlich flexibler ist als andere Lösungen, die ich mir angesehen habe (was für mich wichtig war).
Andere populäre Lösungen sind Ember.js und Knockout.js, die mehr Standardfunktionen bieten. Sie müssen jedoch die Konventionen befolgen, um diese Funktionen nutzen zu können (die für Sie möglicherweise funktionieren oder nicht).
quelle
Dies ist ein Kinderspiel IMO. AngularJS für das Frontend, weil es großartig ist. NodeJS / express / SocketIO für ein dynamisches und sexy Backend mit Pub / Sub-Güte und minimalem Aufwand. Und als Bonus können Sie eine Sprache für die Vorder- und Rückseite verwenden!
Ein Beispiel finden Sie in meiner Implementierung des gleichen https://github.com/hackify/hackify-servers
Eine Einschränkung, einige Leute empfehlen eine NodeJS-Alternative zu Socketio namens sockjs, aber ich habe dies nicht überprüft, daher kann ich es nicht empfehlen
quelle
Klingt nach Apache 2.2 mit PHP oder Tomcat-Anwendungsserver mit einem einfachen Servlet, das Anforderungen verarbeitet. Es ist das Äquivalent des Zimmermanns zu Hammer und Nägeln. Nichts kompliziertes, aber es erledigt die Arbeit. Wenn Sie jemals die Funktionalität erweitern mussten, konnten Sie dies jederzeit tun, da Tomcat jsp und jsf unterstützen kann, falls dies jemals erforderlich war.
Was das Front-End angeht , würde ich gerne einfach jQuery ( $ .post , $ .load , $ .ajax ) verwenden, da es sehr praktisch ist, in Kombination mit der jQuery-Benutzeroberfläche Funktionen für Ihre Seite hinzuzufügen
quelle
Wenn Sie Client-Updates in Echtzeit wünschen, müssen Sie entweder die lang blockierenden "AJAX" -Aufrufe implementieren oder vorzugsweise die modernen Websockets verwenden. Damit können Sie Aktualisierungen auf einen verbundenen Client übertragen, die mit etwas Javascript verarbeitet werden.
Ich verstehe, dass der aktuelle Stand der Technik (oder die neueste Modeerscheinung) AngularJS von Google ist. Es wurde teilweise entwickelt, um das Schreiben von SPAs zu vereinfachen.
quelle
Wenn Sie etwas in der Nähe des mittleren Stapels (node.js, mongo ...) für die Erstellung einer Anwendung für eine einzelne Seite möchten, die reaktiv sein muss, würde ich Meteor wählen . Vor allem, wenn Sie einen Prototyp erstellen und von vorne beginnen.
Rails mit einem eckigen Frontend wären eine gute Wahl, aber es wird schwieriger für Sie, "Updates an die Clients zu senden, wenn Änderungen eintreten", da Sie bestimmte Gems installieren, einige Long-Polling- oder Sockjs-Bibliotheken aneinander reihen müssen. .
quelle