Dipende dalle tue esigenze. Se hai bisogno di una soluzione ad alte prestazioni e bassa latenza che dipende da molte piccole attività, puoi scegliere 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 dipendono fortemente dai database, molti dei quali così tanto che le pagine non possono essere visualizzate senza almeno una chiamata. Ovviamente non vuoi esporre pubblicamente il tuo database, per diversi motivi:
- Sicurezza (come menziona Oded ) - sicuramente non vuoi esporre pubblicamente la tua rete! Idealmente l'unica interfaccia per i tuoi sistemi dall'esterno dovrebbe essere https per il tuo server.
- Facilità di sviluppo: davvero, davvero , davvero non vuoi scrivere SQL in Javascript e i linguaggi progettati per la presentazione web non funzionano bene con gli RDB. Non hanno il concetto di stato, per esempio.
Quindi, quando hai bisogno di un database, usi linguaggi che funzionano bene con loro come Java, C #, PHP, ecc. Il modo più semplice per generare una pagina risulta essere il seguente: usi un linguaggio di template (il più famoso di PHP, ma JSP e ASP sono altri due linguaggi molto comuni) per costruire la pagina. Il linguaggio fornisce costrutti che invocano altri moduli. In PHP questo è comunemente nella pagina o in un altro file PHP, usando il modello MVC. In JSP si utilizzano scriptlet o JSP Expression Language. Questi altri moduli possono svolgere il pesante lavoro di connessione al DB, esecuzione della logica e restituzione di valori al layer della vista. Il risultato finale è una pagina HTML generata, renderizzata sul server e inviata al client.
Quando il database si trova sulla stessa rete del renderer di pagina, si ottengono anche prestazioni migliori. Il client deve solo fare una richiesta e riceve 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 da pochi secondi a minuti se il client dovesse eseguirli tutti.
Quando i sistemi crescono, la separazione delle preoccupazioni e delle competenze chiave diventa cruciale. HTML è buono per la visualizzazione. Javascript è buono per i contenuti dinamici. SQL è ottimo per interrogare un database e altre lingue sono brave nella 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, è quasi importante quanto le prestazioni e l'usabilità. I grandi sistemi si evolvono nel tempo. I sistemi poveri sono stati scritti male dall'inizio e non sono mai stati migliorati.