Depende de cuáles sean sus requisitos. Si necesita una solución de alto rendimiento y baja latencia que depende de muchas tareas pequeñas, puede optar por una estructura similar a la que describe. Sin embargo, las soluciones más comunes, en Java, PHP y C #, no tienen esto por defecto.
La mayoría de las aplicaciones web dependen en gran medida de las bases de datos, la mayoría de ellas tanto que las páginas no se pueden procesar sin al menos una llamada. Obviamente, no desea exponer su base de datos públicamente, por varias razones:
- Seguridad (como menciona Oded ): ¡definitivamente no desea exponer su red públicamente! Idealmente, la única interfaz a sus sistemas desde el exterior debería ser https a su servidor.
- Facilidad de desarrollo: realmente, realmente , realmente no desea escribir SQL en Javascript, y los lenguajes diseñados para la presentación web no funcionan bien con los RDB. No tienen concepto de estado, por ejemplo.
Entonces, cuando necesita una base de datos, utiliza lenguajes que funcionan bien con ellos, como Java, C #, PHP, etc. La forma más fácil de generar una página es la siguiente: utiliza un lenguaje de plantillas (más conocido como PHP, pero JSP y ASP son otros dos lenguajes muy comunes) para construir la página. El lenguaje proporciona construcciones que llaman a otros módulos. En PHP, esto es comúnmente en la página o en otro archivo PHP, utilizando el patrón MVC. En JSP utiliza scriptlets o el lenguaje de expresión JSP. Estos otros módulos pueden hacer el trabajo pesado de conectarse a la base de datos, realizar la lógica y devolver valores a su capa de vista. El resultado final es una página HTML generada, representada en el servidor y enviada al cliente.
Cuando su base de datos está en la misma red que su procesador de página, también obtiene un mejor rendimiento. El cliente solo tiene que hacer una solicitud y recibe una página; puede que tenga que hacer entre 10 y 15 solicitudes de base de datos antes de tener toda la información que necesita el usuario. Una latencia de milisegundos en su red sería de segundos a minutos si el cliente tuviera que hacerlos todos.
Cuando los sistemas crecen, la separación de las preocupaciones y las competencias básicas se vuelve crucial. HTML es bueno para mostrar. Javascript es bueno para contenido dinámico. SQL es excelente para consultar una base de datos, y otros lenguajes son buenos para la lógica empresarial. Nuestro trabajo como desarrolladores es utilizar todas las herramientas disponibles para construir un sistema que se pueda mantener. La facilidad de desarrollo es una gran parte de un buen sistema. En mi opinión, es casi tan importante como el rendimiento y la usabilidad. Los grandes sistemas evolucionan con el tiempo. Los sistemas pobres se escribieron mal desde el principio y nunca se mejoraron.