Dipende da quali sono i tuoi requisiti. Se hai bisogno di una soluzione ad alte prestazioni, a bassa latenza che dipende da molte piccole attività, puoi utilizzare una struttura simile a quella che descrivi. Tuttavia, le soluzioni più comuni, in Java, PHP e C # non sono predefinite.
La maggior parte delle applicazioni Web dipende molto dai database, la maggior parte dei quali è tale che le pagine non possono eseguire il rendering senza almeno una chiamata. Ovviamente non vuoi esporre pubblicamente il tuo database, per diversi motivi:
- Sicurezza (come Oded cita) - tu sicuramente non vuoi esporre pubblicamente la tua rete! Idealmente l'unica interfaccia verso i tuoi sistemi dall'esterno dovrebbe essere https al tuo server.
- Facilità di sviluppo: davvero, veramente , davvero non vuoi scrivere SQL in Javascript e le lingue progettate per il web la presentazione non funziona bene con gli RDB. Non hanno concetto di stato, per esempio.
Quindi, quando hai bisogno di un database, usi linguaggi che giocano con loro come Java, C #, PHP, ecc. Il modo più semplice per generare una pagina risulta essere il seguente: tu usi una lingua di template (la maggior parte notoriamente PHP, ma JSP e ASP sono altri due linguaggi molto comuni) per costruire la pagina. Il linguaggio fornisce costrutti che richiamano altri moduli. In PHP questo è comunemente nella pagina o in un altro file PHP, usando il pattern MVC. In JSP si usano scriptlet o JSP Expression Language. Questi altri moduli sono in grado di connettersi al DB, eseguire la logica e restituire valori al livello di vista. Il risultato finale è una pagina HTML generata, resa sul server e inviata al client.
Quando il tuo database si trova sulla stessa rete del tuo renderer di pagine, ottieni anche prestazioni migliori. Il cliente deve solo fare una richiesta e ricevere una pagina - potrebbe essere necessario fare 10-15 richieste DB prima di avere tutte le informazioni di cui l'utente ha bisogno. Una latenza di millisecondi sulla rete sarebbe di pochi secondi se il cliente dovesse eseguirli tutti.
Quando i sistemi diventano più grandi, la separazione delle preoccupazioni e delle competenze fondamentali diventa cruciale. HTML è buono per la visualizzazione. Javascript è buono per i contenuti dinamici. SQL è ottimo per interrogare un database e altri linguaggi sono validi per la logica aziendale. Il nostro compito come sviluppatori è quello di utilizzare tutti gli strumenti a nostra disposizione per costruire un sistema gestibile. La facilità di sviluppo è una parte enorme di un buon sistema. Nella mia mente, è importante quasi quanto le prestazioni e l'usabilità. I grandi sistemi si evolvono nel tempo. I sistemi scadenti sono stati scritti male fin dall'inizio e non sono mai stati migliorati.