Servidor de aplicaciones, servidor web: ¿Cuál es la diferencia?

23 de agosto de 2002

P: ¿Cuál es la diferencia entre un servidor de aplicaciones y un servidor web?

UN:

Un servidor web maneja exclusivamente las solicitudes HTTP, mientras que un servidor de aplicaciones sirve la lógica empresarial a los programas de aplicación a través de varios protocolos.

Examinemos cada uno con más detalle.

El servidor web

Un servidor web maneja el protocolo HTTP. Cuando el servidor web recibe una solicitud HTTP, responde con una respuesta HTTP, como devolver una página HTML. Para procesar una solicitud, un servidor web puede responder con una página o imagen HTML estática, enviar una redirección o delegar la generación de respuesta dinámica a algún otro programa como scripts CGI, JSP (JavaServer Pages), servlets, ASP (Active Server Pages ), JavaScripts del lado del servidor o alguna otra tecnología del lado del servidor. Cualquiera que sea su propósito, estos programas del lado del servidor generan una respuesta, la mayoría de las veces en HTML, para su visualización en un navegador web.

Comprenda que el modelo de delegación de un servidor web es bastante simple. Cuando llega una solicitud al servidor web, el servidor web simplemente pasa la solicitud al programa que mejor puede manejarla. El servidor web no proporciona ninguna funcionalidad más allá de simplemente proporcionar un entorno en el que el programa del lado del servidor puede ejecutar y devolver las respuestas generadas. El programa del lado del servidor generalmente proporciona por sí mismo funciones tales como procesamiento de transacciones, conectividad de bases de datos y mensajería.

Si bien es posible que un servidor web no admita transacciones o agrupación de conexiones de base de datos, puede emplear varias estrategias para la tolerancia a fallas y la escalabilidad, como equilibrio de carga, almacenamiento en caché y agrupación en clústeres, características que a menudo se asignan erróneamente como características reservadas solo para servidores de aplicaciones.

El servidor de aplicaciones

En cuanto al servidor de aplicaciones, según nuestra definición, un servidor de aplicaciones expone la lógica empresarial a las aplicaciones cliente a través de varios protocolos, posiblemente incluido HTTP. Mientras que un servidor web se ocupa principalmente del envío de HTML para su visualización en un navegador web, un servidor de aplicaciones proporciona acceso a la lógica empresarial para que lo utilicen los programas de aplicación del cliente. El programa de aplicación puede usar esta lógica tal como llamaría a un método en un objeto (o una función en el mundo de los procedimientos).

Dichos clientes de servidor de aplicaciones pueden incluir GUI (interfaz gráfica de usuario) que se ejecutan en una PC, un servidor web o incluso otros servidores de aplicaciones. La información que viaja de ida y vuelta entre un servidor de aplicaciones y su cliente no se limita a un simple marcado de visualización. En cambio, la información es lógica de programa. Dado que la lógica toma la forma de datos y llamadas a métodos y no HTML estático, el cliente puede emplear la lógica empresarial expuesta como quiera.

En la mayoría de los casos, el servidor expone esta lógica empresarial a través de una API de componente, como el modelo de componente EJB (Enterprise JavaBean) que se encuentra en los servidores de aplicaciones J2EE (Java 2 Platform, Enterprise Edition). Además, el servidor de aplicaciones gestiona sus propios recursos. Tales deberes de control incluyen seguridad, procesamiento de transacciones, agrupación de recursos y mensajería. Como un servidor web, un servidor de aplicaciones también puede emplear varias técnicas de escalabilidad y tolerancia a fallas.

Un ejemplo

Como ejemplo, considere una tienda en línea que proporciona información sobre precios y disponibilidad en tiempo real. Lo más probable es que el sitio proporcione un formulario con el que puede elegir un producto. Cuando envía su consulta, el sitio realiza una búsqueda y devuelve los resultados incrustados en una página HTML. El sitio puede implementar esta funcionalidad de diversas formas. Le mostraré un escenario que no usa un servidor de aplicaciones y otro que sí. Ver en qué se diferencian estos escenarios le ayudará a ver la función del servidor de aplicaciones.

Escenario 1: servidor web sin un servidor de aplicaciones

En el primer escenario, un servidor web solo proporciona la funcionalidad de la tienda en línea. El servidor web toma su solicitud y luego la pasa a un programa del lado del servidor capaz de manejar la solicitud. El programa del lado del servidor busca la información de precios de una base de datos o un archivo plano. Una vez recuperada, el programa del lado del servidor usa la información para formular la respuesta HTML, luego el servidor web la envía de vuelta a su navegador web.

En resumen, un servidor web simplemente procesa las solicitudes HTTP respondiendo con páginas HTML.

Escenario 2: servidor web con un servidor de aplicaciones

El escenario 2 se parece al escenario 1 en que el servidor web aún delega la generación de respuesta a un script. Sin embargo, ahora puede colocar la lógica empresarial para la búsqueda de precios en un servidor de aplicaciones. Con ese cambio, en lugar de que el script sepa cómo buscar los datos y formular una respuesta, el script puede simplemente llamar al servicio de búsqueda del servidor de aplicaciones. El script puede usar el resultado del servicio cuando el script genera su respuesta HTML.

En este escenario, el servidor de aplicaciones sirve a la lógica empresarial para buscar la información de precios de un producto. Esa funcionalidad no dice nada sobre la visualización o cómo el cliente debe usar la información. En su lugar, el cliente y el servidor de aplicaciones envían datos de un lado a otro. Cuando un cliente llama al servicio de búsqueda del servidor de aplicaciones, el servicio simplemente busca la información y la devuelve al cliente.

Al separar la lógica de precios del código de generación de respuestas HTML, la lógica de precios se vuelve mucho más reutilizable entre aplicaciones. Un segundo cliente, como una caja registradora, también podría llamar al mismo servicio que un empleado paga a un cliente. Por el contrario, en el escenario 1, el servicio de búsqueda de precios no es reutilizable porque la información está incrustada en la página HTML. En resumen, en el modelo del Escenario 2, el servidor web maneja las solicitudes HTTP respondiendo con una página HTML, mientras que el servidor de aplicaciones atiende la lógica de la aplicación procesando las solicitudes de precios y disponibilidad.

Advertencias

Recientemente, los servicios Web XML han difuminado la línea entre los servidores de aplicaciones y los servidores Web. Al pasar una carga útil XML a un servidor web, el servidor web ahora puede procesar los datos y responder como lo hacían los servidores de aplicaciones en el pasado.

Además, la mayoría de los servidores de aplicaciones también contienen un servidor web, lo que significa que puede considerar un servidor web como un subconjunto de un servidor de aplicaciones. Si bien los servidores de aplicaciones contienen la funcionalidad de servidor web, los desarrolladores rara vez implementan servidores de aplicaciones con esa capacidad. En cambio, cuando es necesario, a menudo implementan servidores web independientes junto con servidores de aplicaciones. Esta separación de funcionalidad ayuda al rendimiento (las solicitudes web simples no afectarán el rendimiento del servidor de aplicaciones), la configuración de implementación (servidores web dedicados, agrupación en clústeres, etc.) y permite la selección de los mejores productos.

Tony Sintes es consultor independiente y fundador de First Class Consulting, una empresa de consultoría que se especializa en unir sistemas empresariales dispares y capacitación. Fuera de First Class Consulting, Tony es un escritor independiente activo, así como autor de Sams Teach Yourself Object-Oriented Programming in 21 Days (Sams, 2001; ISBN: 0672321092).

Más información sobre este tema

  • Para más artículos sobre los servidores de aplicaciones, navegar por servidores de aplicaciones Java sección del JavaWorld' s tópica Índice

    //www.javaworld.com/channel_content/jw-appserv-index.shtml

  • ¿Quieren más? Consulte la página de índice de preguntas y respuestas de Java para obtener el catálogo completo de preguntas y respuestas

    //www.javaworld.com/columns/jw-qna-index.shtml

  • Durante más de 100 consejos interesantes Java a partir de algunas de las mejores mentes en el negocio, visita JavaWorld' s Consejos de Java página de índice

    //www.javaworld.com/columns/jw-tips-index.shtml

  • Obtenga más información sobre servidores de aplicaciones y servidores web en nuestra discusión sobre Java empresarial

    //forums.idg.net/[email protected]@.ee6b80a

  • Suscríbase al boletín informativo semanal gratuito por correo electrónico de Java Enterprise de JavaWorld

    //www.javaworld.com/subscribe

  • Encontrará una gran cantidad de artículos relacionados con TI de nuestras publicaciones hermanas en .net

Esta historia, "Servidor de aplicaciones, servidor web: ¿Cuál es la diferencia?" fue publicado originalmente por JavaWorld.