¿Cuál es la diferencia entre un servidor web y un marco web?


Respuesta 1:

Un "marco web" ofrece un conjunto de API para escribir su propio código personalizado de tal manera que se pueda llamar a través de la Web. Por lo general, un marco se ocupará de detalles comunes, como el análisis de encabezados HTTP, el enrutamiento de URL, etc.

Un servidor web es una pieza de software que escucha en un puerto de red las solicitudes HTTP entrantes y responde a ellas. La mayoría de los servidores web tienen un modo predeterminado en el que interpretarán la solicitud entrante como una ruta en el sistema de archivos y devolverán el archivo en esa ruta, pero generalmente pueden configurarse para hacer algo más con la solicitud (pasarla a un script CGI, Proxy a otro servidor, ejecute un código de módulo personalizado, etc.

Si entrecierra los ojos en Apache o nginx (comúnmente conocidos como servidores web), también podría describirlos como marcos web, ya que ambos ofrecen amplias opciones de configuración y una API de módulo C para escribir código personalizado. Sin embargo, la mayoría de la gente no los llama así.

Del mismo modo, si considera que node.js es un marco (lo cual creo que es una interpretación razonable, pero otros pueden estar en desacuerdo conmigo), también podría considerarlo un servidor web, ya que viene con una implementación de servidor HTTP razonablemente sólida que puede ser comenzó a usar una sola llamada de función.

El problema aquí es realmente que el concepto de un "marco web" no se presta a una definición estricta.

Me imagino que esta respuesta es más confusa que útil, por lo que me disculpo.


Respuesta 2:

El servidor web es un programa que puede manejar solicitudes http. No importa si cubre las especificaciones completas y si lo hace bien. Implementar un servidor web mínimo de este tipo no es tan complicado. Hoy en día, todas las principales plataformas de desarrollo web le permiten iniciar un servidor web simple. Ese suele ser lo suficientemente bueno en alguna área, pero rara vez funciona muy bien en todas las condiciones.

A veces, la plataforma es un servidor de aplicaciones que contiene también un servidor web y tal vez también un marco o al menos conectores (pero puede soportar mucho más), como los servidores Java EE. Otros ejemplos podrían ser Ruby + RoR y webrick, que debería ser un servidor web decente o node.js, que también es bastante impresionante.

Y estas soluciones pueden funcionar bastante bien para proyectos más pequeños y deberían ser lo suficientemente buenas incluso para servir archivos estáticos.

Ahora, ¿dónde está la diferencia en comparación con los grandes como Apache, nginx y otros?

Los servidores web especializados son rápidos, funcionan bajo alta carga y tienen módulos para manejar muchos problemas como sobrecarga (ataques DOS), seguridad y control de acceso, encabezados de caducidad, compresión, SSL, HTTP versión 2, reescritura de URL, hosts virtuales, estándar formatos de registro, tipos mime, proxy, múltiples versiones de contenido y mucho más.

He encontrado un marco de referencia de TechEmpower Web Framework Comparación de rendimiento que compara el rendimiento de 20 solicitudes por segundo y define un marco como "cualquier implementación de servidor HTTP sobre la que pueda construir una aplicación web".

Esta comparación de rendimiento del servidor web de referencia del servidor web realiza pruebas de hasta 3000 solicitudes paralelas. También tenga en cuenta solo el consumo de memoria de los servidores web especializados. Hacer lo mismo con las soluciones marco no es aconsejable.

La configuración común (no solo una) es manejar el contenido estático con el servidor web especializado y pasar solo solicitudes dinámicas al marco.


Respuesta 3:

Odio cuando los términos que tienen significados reales y discretos se mezclan en un globo semántico.

Un servidor web escucha las conexiones web y sirve contenido estático de archivos o pasa solicitudes a otro código. Originalmente, "transmitir" significaba ejecutar programas (generalmente scripts) separados del WS, usando un protocolo llamado CGI (solo una forma estándar de describir llamar al script, comunicar la solicitud, de quién vino, etc.) bibliotecas de scripts, para analizar solicitudes CGI o generar HTML se convirtieron en los primeros marcos web. Se hizo común reducir la sobrecarga de estos scripts externos injertando el intérprete de scripts en el WS. Los marcos web, con el tiempo, comenzaron a asumir gran parte del aspecto de análisis de solicitudes de WS ("enrutamiento"), lo suficiente como para que algunos marcos decidieran prescindir completamente de WS. El estilo de la programación web también ha cambiado: javascript ahora pone una gran parte de la lógica de WF en el navegador, de modo que cualquier lógica que todavía esté en el WS puede reducirse mucho (a diferencia de la noción CGI original, donde el navegador realmente solo maneja Representación de un blob estático de HTML proporcionado por WS.)

Entonces, generalmente cuando las personas dicen WS, se refieren a un WS genérico como Apache. Cuando las personas dicen WF, generalmente se refieren a algo como PHP o un sistema más moderno basado en JS que incluye plantillas, ORM, enrutamiento, etc.


Respuesta 4:

Odio cuando los términos que tienen significados reales y discretos se mezclan en un globo semántico.

Un servidor web escucha las conexiones web y sirve contenido estático de archivos o pasa solicitudes a otro código. Originalmente, "transmitir" significaba ejecutar programas (generalmente scripts) separados del WS, usando un protocolo llamado CGI (solo una forma estándar de describir llamar al script, comunicar la solicitud, de quién vino, etc.) bibliotecas de scripts, para analizar solicitudes CGI o generar HTML se convirtieron en los primeros marcos web. Se hizo común reducir la sobrecarga de estos scripts externos injertando el intérprete de scripts en el WS. Los marcos web, con el tiempo, comenzaron a asumir gran parte del aspecto de análisis de solicitudes de WS ("enrutamiento"), lo suficiente como para que algunos marcos decidieran prescindir completamente de WS. El estilo de la programación web también ha cambiado: javascript ahora pone una gran parte de la lógica de WF en el navegador, de modo que cualquier lógica que todavía esté en el WS puede reducirse mucho (a diferencia de la noción CGI original, donde el navegador realmente solo maneja Representación de un blob estático de HTML proporcionado por WS.)

Entonces, generalmente cuando las personas dicen WS, se refieren a un WS genérico como Apache. Cuando las personas dicen WF, generalmente se refieren a algo como PHP o un sistema más moderno basado en JS que incluye plantillas, ORM, enrutamiento, etc.