Directives d'architecture pour une «application Web à page unique»

12

Je vais démarrer un projet parallèle pour construire une application web "single page". L'application doit être en temps réel et envoyer des mises à jour aux clients au fur et à mesure des changements.

Existe-t-il de bonnes ressources pour les meilleures pratiques par rapport à l'architecture de ces types d'applications? La meilleure ressource que j'ai trouvée jusqu'à présent est l'article sur l'architecture trello ici: http://blog.fogcreek.com/the-trello-tech-stack/

Pour moi, cette architecture, bien que très sexy, est probablement trop conçue pour mes besoins spécifiques - même si j'ai des exigences similaires. Je me demande si je dois m'embêter avec un sous / pub côté serveur, pourrais-je pas simplement pousser les mises à jour depuis le serveur quand quelque chose se passe (par exemple, lorsque le client envoie une mise à jour au serveur, écrire la mise à jour dans la base de données, puis envoyer une mise à jour aux clients).

Côté technologie, je cherche probablement à développer cela dans Node.JS ou peut-être Ruby, bien que les directives d'architecture devraient dans une certaine mesure s'appliquer à toutes les technologies de serveur sous-jacentes.

Matt Roberts
la source

Réponses:

5

Je regarderais certainement vers MVC côté client pour cela, comme Backbone.js. Il est très léger mais donnera à votre application une structure bien nécessaire. Je recommande fortement le screencast Peepcode comme le moyen le plus rapide d'en savoir plus sur Backbone.

Un avantage architectural intéressant de MVC côté client comme celui-ci est le fait que vous pouvez plus facilement évoluer vers l'échange de données avec votre côté serveur, par exemple JSON structuré sur REST.

Backbone.js prend cela en charge - vous pouvez sérialiser vos modèles entre le client et le serveur en JSON, ce qui peut nous libérer de la réflexion en termes de demande / réponse.

Quelque chose comme Node.js du côté serveur fait appel dans ce modèle où vous aurez peut-être beaucoup de demandes potentiellement asynchrones de courte durée pour pousser et extraire des données.

Une alternative .... Un modèle comme Comet peut être un moyen simple de réaliser un pub / sous web et il existe des frameworks côté serveur qui le supportent.

Benjamin Wootton
la source
À la vôtre, je pensais vraiment à utiliser un MV * FW pour le côté client, et j'ai appris à propos de Backbone .. Bons conseils.
Matt Roberts
1

J'irais probablement avec un framework javascript MV * pour le front-end. Je suis moi-même en train de créer une application Web d'une seule page et après avoir étudié un certain nombre de solutions, j'ai fini par utiliser Backbone.js. J'ai trouvé que cette solution ne fournissait pas la plupart des fonctionnalités prêtes à l'emploi, elle m'a fourni une base de base pour commencer et est beaucoup plus flexible que les autres solutions que j'ai examinées (ce qui était important pour moi).

Les autres solutions populaires sont Ember.js et Knockout.js qui fournissent plus de fonctionnalités prêtes à l'emploi, mais vous devez suivre leurs conventions pour utiliser la fonctionnalité thT (qui peut ou non fonctionner pour vous).

ryanzec
la source
1

Ceci est une IMO sans encombre. AngularJS pour le frontal car c'est génial. NodeJS / express / SocketIO pour un backend dynamique et sexy avec bonté pub / sub et un minimum d'agitation. Et en prime, vous pouvez utiliser une seule langue pour le recto et le verso!

Découvrez ma mise en œuvre de même https://github.com/hackify/hackify-server pour un exemple

Une mise en garde, certaines personnes recommandent une alternative NodeJS à socketio appelée sockjs mais je n'ai pas vérifié cela, donc je ne peux pas le recommander

Michael Dausmann
la source
0

On dirait que ce que vous regardez est Apache 2.2 avec serveur d'applications PHP ou Tomcat avec un servlet simple qui gère les demandes. C'est l'équivalent du marteau du marteau et des clous. Rien de compliqué mais ça fait le boulot. Si vous avez besoin d'étendre les fonctionnalités, vous pouvez toujours le faire puisque Tomcat peut prendre en charge jsp et jsf si vous en avez besoin.

Pour ce qui concerne le front-end, je serais à l'aise d'utiliser simplement jQuery ( $ .post , $ .load , $ .ajax ) car il est assez pratique de doubler comme moyen d'ajouter des fonctionnalités à votre page en combinaison avec jQuery UI

Neil
la source
0

Si vous voulez des mises à jour du client en temps réel, vous devrez soit implémenter les appels "AJAX" à blocage long, soit utiliser de préférence les Websockets modernes. Ceux-ci vous permettent de pousser les mises à jour vers un client connecté qui seront gérées par un peu de javascript.

Je comprends que l'état actuel de la technique (ou la dernière mode) est AngularJS by Google. Il est en partie conçu pour faciliter l'écriture des SPA.

gbjbaanb
la source
0

Si vous voulez quelque chose de proche de la pile moyenne (node.js, mongo ...) pour construire une application d'une seule page qui doit être réactive, je choisirais un météore . Surtout si vous construisez un prototype et recommencez à zéro.

Les rails avec une interface angulaire seraient un choix correct à mon humble avis, mais vous aurez plus de mal à "envoyer des mises à jour aux clients au fur et à mesure des changements", car vous auriez besoin d'installer des gemmes spécifiques, de regrouper des bibliothèques à longue interrogation ou sockjs. .

Benjamin Crouzier
la source