Linee guida di architettura per una "web-app a pagina singola"

12

Avvierò un progetto parallelo per creare un'applicazione web "a pagina singola". L'applicazione deve essere in tempo reale, inviando aggiornamenti ai client man mano che le modifiche si verificano.

Ci sono buone risorse per approcci di best practice sull'architettura per questi tipi di applicazioni. La risorsa migliore che ho trovato finora è l'articolo sull'architettura trello qui: link

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

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

    
posta Matt Roberts 26.04.2012 - 11:51
fonte

6 risposte

5

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

Un buon vantaggio architettonico del lato client MVC come questo è il fatto che puoi spostarti più facilmente verso lo scambio di dati con il tuo server, ad es. JSON strutturato su REST.

Backbone.js supporta questa funzionalità - puoi serializzare i tuoi modelli tra client e server come JSON, che ci può liberare dal pensare in termini di richiesta / risposta.

Qualcosa come Node.js sul lato server attrae sotto questo modello, dove potresti avere un sacco di richieste potenzialmente asincrone di breve durata per spingere e tirare dati.

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

    
risposta data 26.04.2012 - 13:16
fonte
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 un certo numero di soluzioni, ho finito con Backbone.js. Ho scoperto che questa soluzione non offriva la massima funzionalità, ma mi ha fornito una base fondamentale per iniziare ed è molto più flessibile rispetto alle altre soluzioni che ho considerato (che era importante per me).

Altre soluzioni popolari sono Ember.js e Knockout.js che forniscono più funzionalità immediatamente disponibili, tuttavia devi seguire le loro convenzioni per utilizzare la funzionalità thT (che potrebbe funzionare o meno per te).

    
risposta data 26.04.2012 - 12:54
fonte
1

Questo è un IMO senza cervello. AngularJS per il front end perché è fantastico. NodeJS / express / SocketIO per un backend dinamico e sexy con pub / sub bontà e un minimo di confusione. E come bonus, puoi usare una lingua per la parte anteriore e quella posteriore!

Guarda la mia implementazione dello stesso link per un esempio

Un avvertimento, alcuni suggeriscono un'alternativa NodeJS al socketio chiamata sockjs ma non l'ho verificato quindi non posso raccomandarlo

    
risposta data 16.10.2014 - 23:16
fonte
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 ha portato a termine il lavoro. Se hai mai avuto bisogno di espandere la funzionalità, puoi sempre farlo poiché Tomcat può supportare jsp e jsf se ne hai mai avuto bisogno.

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

    
risposta data 26.04.2012 - 13:07
fonte
0

Se desideri aggiornamenti client in tempo reale, dovrai implementare le chiamate "AJAX" a blocco lungo o utilizzare preferibilmente le websocket moderne. Questi ti permettono di inviare aggiornamenti ad un client connesso che sarà gestito da un po 'di javascript.

Capisco che l'attuale stato dell'arte (o ultima moda) è AngularJS di Google. In parte è stato progettato per semplificare la scrittura di SPA.

    
risposta data 17.10.2014 - 15:12
fonte
0

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

Le rotaie con un frontend angolare sarebbero una scelta giusta imho, ma avrai più difficoltà a "inviare aggiornamenti ai client man mano che le modifiche accadono", poiché dovresti installare gemme specifiche, stringere insieme un lungo polling o sockjs biblioteca ...

    
risposta data 29.10.2014 - 23:34
fonte

Leggi altre domande sui tag