Cela dépend de vos besoins. Si vous avez besoin d'une solution hautes performances à faible latence qui dépend de nombreuses petites tâches, vous pouvez opter pour une structure similaire à ce que vous décrivez. Cependant, les solutions les plus courantes, en Java, PHP et C #, ne le font pas par défaut.
La plupart des applications Web dépendent fortement des bases de données - la plupart d'entre elles à tel point que les pages ne peuvent pas s'afficher sans au moins un appel. Évidemment, vous ne voulez pas exposer votre base de données publiquement, pour plusieurs raisons:
- Sécurité (comme le mentionne Oded ) - vous ne voulez certainement pas exposer votre réseau publiquement! Idéalement, la seule interface vers vos systèmes depuis l'extérieur devrait être https vers votre serveur.
- Facilité de développement - vous ne voulez vraiment, vraiment , vraiment pas écrire SQL en Javascript, et les langages conçus pour la présentation Web ne fonctionnent pas bien avec les RDB. Ils n'ont pas de concept d'État, par exemple.
Donc, lorsque vous avez besoin d'une base de données, vous utilisez des langages qui fonctionnent bien avec eux comme Java, C #, PHP, etc. La façon la plus simple de générer une page se présente comme suit: mais JSP et ASP sont deux autres langages très courants) pour construire la page. Le langage fournit des constructions qui appellent d'autres modules. En PHP, c'est généralement dans la page ou dans un autre fichier PHP, en utilisant le modèle MVC. Dans JSP, vous utilisez des scriptlets ou le langage d'expression JSP. Ces autres modules peuvent effectuer le gros travail de connexion à la base de données, d'exécution de la logique et de retour de valeurs à votre couche de vue. Le résultat final est une page HTML générée, rendue sur le serveur et envoyée au client.
Lorsque votre base de données se trouve sur le même réseau que votre moteur de rendu de page, vous obtenez également de meilleures performances. Le client n'a qu'à faire une seule demande et reçoit une page - vous devrez peut-être faire 10 à 15 demandes de base de données avant d'avoir toutes les informations dont l'utilisateur a besoin. Une latence de quelques millisecondes sur votre réseau serait de quelques secondes à quelques minutes si le client devait tout faire.
Lorsque les systèmes s'agrandissent, la séparation des préoccupations et des compétences de base devient cruciale. Le HTML est bon pour l'affichage. Javascript est bon pour le contenu dynamique. SQL est idéal pour interroger une base de données, et d'autres langages sont bons en logique métier. Notre travail de développeur est d'utiliser tous les outils à notre disposition pour construire un système maintenable. Facilité de développement est une grande partie d'un bon système. Dans mon esprit, c'est presque aussi important que les performances et la convivialité. Les grands systèmes évoluent avec le temps. Les mauvais systèmes ont été mal écrits dès le départ et n'ont jamais été améliorés.