Gráfica comparativa
Bases para la comparación | CGI | Servlet |
---|---|---|
BASIC | Los programas están escritos en el SO nativo. | Programas empleados utilizando Java. |
Dependencia de la plataforma | Dependiente de la plataforma | No confía en la plataforma. |
Creación de proceso | Cada solicitud de cliente crea su propio proceso. | Los procesos se crean en función del tipo de solicitud del cliente. |
Conversión del guión | Presente en forma de ejecutables (nativos del sistema operativo del servidor). | Compilado a Java Bytecode. |
Se ejecuta en | Proceso separado | JVM |
Seguridad | Más vulnerable a los ataques. | Puede resistir ataques. |
Velocidad | Más lento | Más rápido |
Procesamiento de guión | Directo | Antes de ejecutar los scripts es traducido y compilado. |
Portabilidad | No puede ser portado | Portátil |
Definición de CGI
La CGI (Common Gateway Interface) es una interfaz que maneja programas externos (scripts CGI) en un servidor web para permitir la ejecución de las páginas web interactivas. CGI fue desarrollado por NCSA (Centro Nacional para Aplicaciones de Supercomputación) en 1993. Reside en el lado del servidor y permite que los navegadores web interactúen con programas en el servidor web. Por ejemplo, si una página web consulta una base de datos o un usuario está enviando la información del formulario al servidor en ese momento, se invocan los scripts CGI. El servidor pasa esa información a una aplicación de dos maneras GET o POST, luego la aplicación responde al servidor de nuevo al navegador. De esta forma, los navegadores obtienen algunos resultados para el usuario.
CGI es una estipulación, para describir un método para ejecutar scripts CGI y proporcionar los resultados al servidor para esos programas en particular. La función de un CGI es escanear la información recibida desde el navegador y producir una respuesta adecuada, una vez finalizada la tarea, se termina el script CGI. En la Interfaz de puerta de enlace común, lo común significa que puede funcionar bien en cualquier sistema operativo o lenguaje de programación.
Anteriormente, los scripts de shell de UNIX y PERL se utilizaban para escribir los programas CGI, es por eso que se denominan "scripts" CGI. Pero, ahora se puede usar cualquiera de los lenguajes como C, C ++, Perl, Visual Basic o Python. Aunque, CGI puede liderar los posibles problemas de seguridad, ya que el servidor web también puede tratar los archivos ejecutables como programas CGI en algunos directorios específicos. CGI maneja cada solicitud del cliente mediante un proceso separado que aumenta la carga del servidor, haciéndolo más lento.
Definición de Servlet
Un Servlet es un componente web basado en Java que actúa como un programa intermedio que facilita la interacción entre el navegador web o el cliente HTTP y el servidor HTTP. Al igual que CGI, los servlets también se pueden usar para recopilar la información de los formularios de la página web, mostrar los registros de la base de datos y generar páginas web dinámicas con la ayuda de un contenedor. Servlet es una clase de Java que no se basa en la plataforma y se compila en el bytecode que es independiente de la plataforma. El servidor web de Java puede almacenar y ejecutar dinámicamente el código de bytes neutral de la plataforma. Servlet utiliza un mecanismo de socket y RMI para establecer la conexión entre applets, bases de datos u otros programas de bases de datos.
Servlet contenedor es una parte del servidor web que admite los protocolos HTTP y HTTPS . Emplea el método de solicitud / respuesta utilizando el protocolo HTTP y HTTPS para permitir la interacción con los clientes web. A diferencia de CGI, el servlet se ejecuta dentro del espacio de direcciones del servidor web, donde cada cliente no necesariamente se trata por separado. En el servlet, se impone una colección de restricciones en el servidor para proteger los recursos en el servidor.
Diferencias clave entre CGI y Servlet
- Los scripts CGI se escriben en el sistema operativo nativo y se almacenan en un directorio determinado. Por otro lado, los programas de servlets generalmente se escriben en Java, que se compila en el bytecode Java y se ejecuta en JVM.
- CGI es una plataforma específica, lo que dificulta el cambio entre sistemas operativos. A diferencia de, los Servlets se pueden ejecutar en cualquier sistema operativo que tenga instalada JVM, por lo que es independiente de la plataforma.
- En CGI, cada solicitud de cliente que llega puede generar un proceso separado mientras que el servlet, los procesos no se crean innecesariamente y comparten el espacio de memoria de la JVM.
- Los scripts CGI son programas ejecutables escritos en el sistema operativo nativo del servidor. Por el contrario, los servlets se compilan a código de bytes de Java que se ejecuta en JVM.
- Servlet es más seguro que CGI ya que usa Java.
- La velocidad, el rendimiento y la eficiencia del servlet son mejores que los de CGI.
- Los scripts CGI pueden ser procesados directamente. Por el contrario, el servlet primero traduce y compila el programa y luego lo procesa.
- Cuando se trata de portabilidad, el servlet es portátil mientras que CGI no lo es.
Conclusión
El CGI y el Servlet funcionan de la misma manera, pero el uso del servlet es ventajoso sobre el CGI, ya que el servlet es rápido, seguro, independiente de la plataforma, se desarrolla fácilmente, es accesible a través de varias API y es compatible con varios servidores web.