Linee guida per l'architettura di una "app Web a pagina singola"


12

Ho intenzione di avviare un progetto secondario per creare un'applicazione Web a "pagina singola". L'applicazione deve essere in tempo reale e inviare aggiornamenti ai client in caso di modifiche.

Esistono buone risorse per gli approcci delle migliori pratiche all'architettura per questo tipo di applicazioni. La migliore risorsa che ho trovato finora è l'articolo sull'architettura trello qui: http://blog.fogcreek.com/the-trello-tech-stack/

Per me, questa architettura, sebbene molto sexy, è probabilmente troppo progettata per le mie esigenze specifiche, anche se ho requisiti simili. Mi chiedo se devo preoccuparmi di un sub / pub sul lato server, non posso semplicemente inviare aggiornamenti dal server quando succede qualcosa (ad es. Quando il client invia un aggiornamento al server, scrivere l'aggiornamento sul db, e quindi inviare un aggiornamento ai client).

Dal punto di vista tecnico, probabilmente sto cercando di svilupparlo in Node.JS o forse in Ruby, anche se le linee guida sull'architettura dovrebbero in qualche misura applicarsi a qualsiasi tecnologia server sottostante.

Risposte:


5

Guarderei sicuramente verso MVC lato client per questo come Backbone.js. È molto leggero ma fornirà alla tua applicazione una struttura molto necessaria. Consiglio vivamente il screencast Peepcode come il modo più veloce per saperne di più su Backbone.

Un bel vantaggio architettonico di MVC lato client come questo è il fatto che è possibile spostarsi più facilmente verso lo scambio di dati con il lato server, ad esempio JSON strutturato su REST.

Backbone.js supporta questo immediatamente: puoi serializzare i tuoi modelli tra client e server come JSON, il che ci può liberare dal pensare in termini di richiesta / risposta.

Qualcosa di simile a Node.js sul lato server fa appello a questo modello in cui probabilmente avrai molte richieste potenzialmente asincrone di breve durata per inviare e estrarre i dati.

Un'alternativa .... Un modello come Comet può essere un modo semplice per realizzare web pub / sub e ci sono alcuni framework lato server che supportano questo.


Saluti, stavo sicuramente pensando di usare un MV * FW per il lato client, e ho imparato a conoscere Backbone .. Buoni consigli.
Matt Roberts,

1

Probabilmente andrei con un framework javascript MV * per il front-end. Io stesso sto costruendo un'applicazione web a pagina singola e dopo aver esaminato una serie di soluzioni, ho finito con Backbone.js. Ho scoperto che questa soluzione non offriva la massima funzionalità, ma mi ha fornito una base di base per iniziare ed è molto più flessibile di altre soluzioni che ho visto (che era importante per me).

Altre soluzioni popolari sono Ember.js e Knockout.js che offrono funzionalità out-of-the-box, tuttavia è necessario seguire le convenzioni per utilizzare la funzionalità THT (che può o meno funzionare per te).


1

Questo è un IMO semplicissimo. AngularJS per il front-end perché è fantastico. NodeJS / express / SocketIO per un backend dinamico e sexy con bontà pub / sub e un minimo di storie. E come bonus, puoi usare una lingua per il fronte e il retro!

Controlla la mia implementazione dello stesso https://github.com/hackify/hackify-server per un esempio

Un avvertimento, alcune persone stanno raccomandando un'alternativa NodeJS al socketio chiamato sockjs ma non l'ho verificato quindi non posso raccomandarlo


0

Sembra che quello che stai guardando sia Apache 2.2 con PHP o Tomcat application server con un semplice servlet che gestisce le richieste. È l'equivalente del falegname di martello e chiodi. Niente di complicato, ma fa il lavoro. Se hai mai avuto bisogno di espandere la funzionalità, puoi sempre farlo poiché Tomcat può supportare jsp e jsf se mai ne hai bisogno.

Per quanto riguarda il front-end, mi sento a mio agio semplicemente usando jQuery ( $ .post , $ .load , $ .ajax ) poiché è abbastanza utile raddoppiare come mezzo per aggiungere funzionalità alla tua pagina in combinazione con l' interfaccia utente di jQuery


0

Se desideri aggiornamenti client in tempo reale, dovrai implementare le chiamate "AJAX" a blocco prolungato, o preferibilmente utilizzare i moderni websocket. Questi ti consentono di inviare aggiornamenti a un client connesso che verrà gestito da un po 'di javascript.

Capisco che l'attuale stato dell'arte (o l'ultima moda) è AngularJS di Google. È parzialmente progettato per facilitare la scrittura di SPA.


0

Se vuoi qualcosa di simile allo stack medio (node.js, mongo ...) per creare un'applicazione a pagina singola che deve essere reattiva, sceglierei meteor . Soprattutto se stai costruendo un prototipo e partendo da zero.

Le rotaie con un frontend angolare sarebbero una scelta giusta, ma avrai un momento più difficile "invio di aggiornamenti ai client in caso di modifiche", dato che dovrai installare gemme specifiche, mettere insieme alcune librerie con polling lungo o sockjs. .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.