Avere solo pagine statiche che chiamano il backend è una buona idea?

3

Sono nuovo nello sviluppo di applicazioni web, specialmente quando si tratta di frontend, ma come ho capito, una struttura tipica per una grande applicazione avrebbe un livello di frontend php (o equivalente) che chiamava i servizi di back-end e generava pagine dinamiche.

Ora stiamo costruendo un nuovo sito e un mio collega insiste per non avere il livello che genera le pagine dinamiche. Vuole che le pagine siano semplici scheletri con html e JS, quindi fondamentalmente pagine web statiche e invocando direttamente il backend (REST) con JS. Questo, ovviamente, significa avere i servizi di back-end pubblicamente disponibili, che non mi piacciono particolarmente.

Questo approccio di architettura è consigliabile? Scala?

    
posta mark951131b 11.12.2015 - 21:33
fonte

1 risposta

6

L'architettura suggerita dal tuo collega è piuttosto comune al giorno d'oggi - si chiama Applicazione per pagina singola .

In termini di sicurezza i due metodi sono equivalenti: in entrambi i casi il server sta generando tutti i dati necessari per la creazione della pagina e l'invio al client. L'unica differenza è dove e in che modo questi dati vengono formattati per essere visualizzati all'utente.

Ad esempio, se si desidera consentire all'utente la ricerca di prodotti, nell'approccio classico il server genererà l'intera pagina HTML con l'elenco di prodotti al suo interno e nell'approccio SPA il server genererà la stessa lista di prodotti, ma invece di eseguire il rendering HTML, serializzerà l'elenco in XML o JSON o qualsiasi altro formato e invierà l'elenco serializzato al client.

Da notare che in entrambi i casi:

  • Tutti i dati necessari per visualizzare i prodotti sono trasferiti sul filo.
  • Dati non necessari per la visualizzazione dei prodotti o per l'esecuzione di ulteriori operazioni su di essi (come l'ID prodotto che, anche se non lo visualizzi, il client ne ha ancora bisogno nel caso in cui l'utente clicchi sul pulsante per ordinare il prodotto) < strong> non raggiunge il cliente.
  • I servizi interni non sono pubblicamente disponibili - non è possibile interrogare il DB direttamente anche con SPA, solo per invocare il metodo che genera l'elenco di prodotti (e qualsiasi altro metodo che si decide di esporre al client - ma si devono esporre servizi simili anche nell'approccio classico)

Per quanto riguarda la sicurezza, l'unico vantaggio dell'approccio classico rispetto all'approccio SPA è che le SPA rendono un po 'più facile l'utilizzo programmatico dell'applicazione - ad esempio, per me è più facile creare uno script che viene eseguito ogni mattina, accedere con le mie credenziali, richiede l'elenco di prodotti e mi invia email se hai aggiunto un nuovo prodotto. Ma avrei potuto farlo anche con l'approccio classico - sarebbe stato un po 'più difficile (perché è più difficile estrarre i dati dalla pagina HTML che da un formato di serializzazione) ma sarebbe stato comunque possibile (ho effettivamente fatto che alcune volte ...)

    
risposta data 11.12.2015 - 22:09
fonte

Leggi altre domande sui tag