Quali sono i vantaggi di un'architettura "backend" tradizionale per un'app CRUD standard? [chiuso]

1

Negli ultimi anni, le applicazioni web "client-side" sono diventate popolari. Un approccio comune al giorno d'oggi è quello di avere il back-end il più sottile possibile, esponendo per lo più un'API per l'app JavaScript lato client da utilizzare.

Ciò che mi interessa non sono i vantaggi di questo approccio, poiché questo sembra essere l'approccio preffered oggi e i suoi professionisti sono stati discussi su questo sito.

Sono interessato ai vantaggi dell'approccio più tradizionale, basato sul backend. Dove il templating e il routing delle pagine avvengono sul backend e la logica del frontend è sottile.

Si noti che questa domanda si riferisce alle applicazioni standard "CRUD", non ai software specializzati di editing video o ai programmi che eseguono algoritmi intensi (questo tipo di calcolo deve ovviamente avvenire sul backend).

Mi riferisco ai vantaggi di un'architettura back-end per la tua "tipica app web".

    
posta Aviv Cohn 14.11.2015 - 14:36
fonte

2 risposte

1

Il vantaggio appare ogni volta che si colpisce il vincolo dell'esecuzione lato client. Considera tre casi:

  • Un'applicazione di elaborazione video. Quale sarebbe il vincolo? Giusto, la CPU e i vincoli di memoria di un browser in esecuzione su un computer client. Noterai rapidamente che molte azioni sono praticamente impossibili da eseguire o richiedono ore anziché secondi.

  • Tutto ciò che utilizza gigabyte di dati. Una ricerca su miliardi di record nel database potrebbe richiedere millisecondi quando eseguita dal server. Se fatto dal cliente, ci vorranno secondi a ore, a seconda della velocità di Internet.

  • Un algoritmo intelligente che desideri nascondere ai tuoi concorrenti. Chiunque può leggere JavaScript. Spostando la logica sul lato server, è difficile rendere impossibile il reverse engineering.

Un altro vantaggio di avere la logica sul lato server è, naturalmente, il fatto che è possibile controllare esattamente l'ambiente di esecuzione. È possibile scegliere il sistema operativo, il linguaggio di programmazione e persino l'hardware sottostante. Nel mondo di scripting lato client, non hai questa libertà. Il tuo codice può finire in esecuzione su un PC antico con Windows XP e IE7, o un tablet, o uno smartphone, o un dispositivo utilizzato da una persona con disabilità visiva che utilizza le interfacce text-to-speech e speech-to-text.

    
risposta data 14.11.2015 - 15:21
fonte
1

Ci sono attività che possono essere fatte solo su un server, e alcune che possono essere fatte solo su un client. In altri casi, ci sono alcuni vantaggi ragionevolmente chiari di implementare qualcosa sul back-end sul front-end:

  • Migliori opzioni di memorizzazione nella cache, ad es. Varnish e tecnologie simili
  • Spesso, velocità - come mostrano i benchmark, il tipico codice Java / C # è ancora più veloce di JavaScript. Tuttavia, SPA vince nei casi in cui un collo di bottiglia è il networking vs calcoli
  • Sviluppo più semplice per una piattaforma rispetto allo sviluppo per oltre 8 browser diversi, e quindi una manutenzione più semplice
  • "Logica nascosta" e prevenzione degli imbrogli. Ad esempio, se stai costruendo un gioco online, alcune parti potresti voler essere fatte su un server per prevenire cheating / hacking modificando una logica di gioco su un client. Inoltre, se vuoi nascondere alcuni algoritmi ai tuoi utenti, fai lo stesso
  • Spesso, la mancanza di alcune funzionalità nei browser o l'inefficienza di tali funzionalità. Ad esempio, la creazione di un report su una grande quantità di dati utilizzando varie funzioni di aggregazione dei dati può essere eseguita in modo efficiente in SQL, ma non in JavaScript
risposta data 14.11.2015 - 15:41
fonte

Leggi altre domande sui tag