Costruire applicazioni web in server-side vs client-side vs hybrid? [chiuso]

27

Attualmente esistono diversi approcci per la creazione di applicazioni Web:

1. Solo lato server

Questo è un approccio classico in cui si renderizzano le pagine sul server da una struttura web come Ruby on Rails, Django, Express, Play! Quadro ed ecc.

Flusso di lavoro tipico : crea tutta la tua logica aziendale, i modelli e i modelli di visualizzazione sul server nel quadro di tua scelta.

2. API lato client + REST

Relativamente non molto tempo fa, la comunità Web nel suo complesso ha iniziato a sviluppare applicazioni lato client in Angular, Backbone, Ember e alcune decine di altri framework JavaScript MV *. E ora abbiamo anche React.js ad unirsi alla festa.

UPDATE : non ci sono equivoci. Ciò che intendevo per parte del cliente è solo la completa separazione delle preoccupazioni. Hai un server API REST e un'applicazione client che parla con quel server. A seconda del tuo caso d'uso, è probabile che non avrai mai una vera applicazione lato client che non si connette a un back-end per l'autenticazione o la persistenza dei dati.

Flusso di lavoro tipico : trascorri ore a decidere su Angular vs Backbone vs Ember vs X. Poi costruisci percorsi, modelli, viste, controller sul client. Dopo aver terminato, ora crea modelli, controller, rotte sul server. In un certo senso stai facendo il doppio del lavoro.

3. Hybrid

Non ne so molto sull'utilizzo di questo approccio, ma se dovessi fare una supposizione, rendi le tue viste (Vista del framework MVC) sul server. Di conseguenza ottieni supporto SEO più carichi di pagine più veloci.

Sul fronte Hybrid c'è il rendering di airbnb che presumibilmente combina backbone ed express insieme.

Eric Florenzo ha pubblicato sul suo blog oggi: React: Infine, un ottimo server / stack Web client .

La quantità di modi per creare applicazioni web è semplicemente schiacciante. E per qualcuno che sta imparando lo sviluppo web questo può diventare un problema. Come si può decidere quale approccio utilizzare per costruire la loro prossima applicazione?

    
posta Rated R 24.01.2014 - 01:51
fonte

3 risposte

13

Penso che tu abbia completamente frainteso il "lato cliente".

In primo luogo dovrebbe essere etichettato come "Client Centric". L'intero punto di framework come Angular è che le parti "VC" di MVC sono implementate interamente nel browser in Javascript. La logica di livello superiore "M" della parte "M" - il modello - viene implementata nel browser e la logica di livello inferiore "CRUD" viene implementata sul server.

La logica aziendale è sviluppata una volta. La logica di visualizzazione è sviluppata una volta. La logica di controllo viene sviluppata una volta, tutto nel framework di scelta di Javascript. Anche la logica di accesso ai dati viene sviluppata una sola volta, ma questa volta su qualsiasi struttura RESTy o SOAPy scelta sul lato server.

In casi estremi è possibile implementare il Modello interamente nel client, se è accettabile accedere ai dati da un solo browser su una macchina, e fare in modo che i dati vengano eliminati ogni volta che viene selezionata l'opzione "Cancella cookie".

    
risposta data 24.01.2014 - 02:24
fonte
9

La risposta alla domanda è che dipende dai requisiti. Uno sguardo almeno superficiale alla storia dello sviluppo del "web" indica una cultura da cowboy in cui parlare con gli stakeholder, i clienti, la raccolta dei requisiti, è spesso trascurato.

Ho avuto la fortuna di partecipare a un discorso alcuni anni fa, in cui ho sentito qualcosa che mi ha davvero impressionato: "scegli il design per soddisfare i requisiti, non i requisiti per soddisfare il design". Quindi, di fronte a una domanda come questa, devi andare a scoprire ciò che è effettivamente necessario dalle persone che ti chiedono di creare questo software.

Il tuo compito è quello di spiegare i pro e i contro di ogni approccio.

    
risposta data 24.01.2014 - 04:09
fonte
5

Penso che uno dei punti chiave degli approcci e dei framework più recenti sia che c'è meno accoppiamento tra le tecnologie front-end e le tecnologie back-end.

L'idea è che puoi usare qualsiasi framework sul client e tirare dati e / o viste da qualsiasi numero di sorgenti indipendentemente dal framework del lato server.

Questo ci consente di scegliere gli strumenti migliori per portare a termine il lavoro e le nostre scelte possono evolversi indipendentemente.

Certo, non ho usato Angular o Backbone quindi non posso fare raccomandazioni con esperienza. Il mio attuale stack di base è costituito dal più sottile servizio in mvc sul lato server o da servizi che posso trovare. Generalmente consegna modelli e dati. I dati sono resi e / o i dati successivi recuperati lato client utilizzando principalmente solo semplice 'javascript, jquery e css.

Comincio qui e costruisco su di esso se fosse necessario. I vantaggi di questo approccio sono evidenti quando pensate di supportare più piattaforme client: browser, dispositivi mobili, ecc. Se avete bisogno di rendering specifico per il cliente, non dovreste aver bisogno di fare enormi cambiamenti sul lato server.

    
risposta data 24.01.2014 - 02:28
fonte

Leggi altre domande sui tag