Fundamentos de la programación CGI

En la actualidad, la mayor parte de las aplicaciones Web de cierta envergadura se desarrollan utilizando alguna tecnología "moderna": páginas ASP, ColdFusion, Servlets Java, páginas JSP, PHP. Sin embargo no hace mucho tiempo los programadores sólo podían recurrir a lo que se denominó como "programación CGI". Esta es la base de todo lo que ha sucedido hasta el momento. Su conocimiento es casi tan importante como el estudio de las tecnologías más recientes ya que proporciona una visión profunda y completa del armazón conceptual que sustenta a las aplicaciones Web de hoy en día.

 Entorno
Compilador de C
Respuesta de un programa CGI
Métodos de envío de información a un programa CGI
Formato de codificación
Variables de entorno
Direcciones de interés

La interfaz CGI (Common Gateway Interface) resultó ser una de las primeras formas que se encontraron para dar dinamismo a las páginas HTML. Hasta entonces los sitios web eran simplemente una colección de páginas estáticas cuyo contenido era invariable. Las limitaciones de este modelo eran evidentes y se evolucionó hacia un sistema en el que fuera posible el desarrollo de páginas dinámicas, es decir, páginas cuyo contenido variara en función de unos parámetros. Para ello los servidores Web tenían que ser capaces de ejecutar aplicaciones o programas que generaran dinámicamente el código HTML. El problema principal consistía en cómo fijar las reglas del diálogo que tendría que producirse entre las distintas partes implicadas en la comunicación: desde un navegador un usuario lanza una petición; el servidor recoge esa petición y ejecuta una programa que toma de alguna manera los parámetros de la petición; el programa genera código HTML, el servidor lo recoge y lo manda al navegador.

Las siglas CGI definen una interfaz entre aplicaciones externas y servicios de información. Por lo tanto, la interfaz CGI no es más que una serie de reglas que deben cumplir tanto las aplicaciones como los servidores para hacer posible la presentación de páginas web generadas por programas ejecutables en tiempo real. En otras palabras, la interfaz CGI establece las normas que deben regir todas las tareas que ocurren desde que se produce una petición hasta que llega la página web al navegador del usuario. Al tratarse de una interfaz, no existe ningún tipo de dependencia con respecto al lenguaje de programación empleado. Lo que se denomina comúnmente como "programa CGI" es simplemente una aplicación, desarrollada con cualquier lenguaje de programación, que cumple las reglas de la interfaz CGI, o lo que es lo mismo, que está preparada para utilizarse en el entorno cliente-servidor típico de las aplicaciones Web.

La Figura 1 ilustra el diálogo que se produce entre el navegador y el servidor durante una petición:

  1. Un usuario sigue un enlace que contiene parámetros o simplemente manda un formulario.
  2. El servidor recibe la petición e inmediatamente llama al programa CGI pasándole los datos procedentes del cliente.
  3. El programa CGI se ejecuta y devuelve una respuesta al servidor que puede ser, por ejemplo, código HTML.
  4. El servidor envía esa respuesta al cliente y como consecuencia de esto, el navegador del usuario muestra la página web generada dinámicamente por el programa CGI.

Al principio los programas CGI se desarrollaron casi exclusivamente en C o en Perl, que eran lenguajes ya extendidos en las máquinas Unix donde se encontraban la mayor parte de los servidores Web. Con el paso del tiempo se crearon librerías estándar que permitían llevar a cabo la mayor parte de las tareas típicas de este tipo de programas. A partir de este punto fueron apareciendo paulatinamente nuevas tecnologías que mejoraban sensiblemente el rendimiento de las aplicaciones Web y proporcionaban al mismo tiempo un entorno de trabajo más adecuado para dar lugar a aplicaciones Web complejas. La interfaz CGI sigue siendo hoy en día el sustrato principal de todas estas tecnologías aunque gran parte de los programadores lo ignoren, o no sean conscientes de ello.

A continuación se van a estudiar todos aquellos aspectos de la interfaz CGI así como del protocolo HTTP que se requieren para desarrollar programas CGI. Se tomará C como lenguaje de desarrollo por ser uno de los principales lenguajes que se utilizó inicialmente para desarrollar este tipo de aplicaciones.

 Imprimir  Subir

Whitepaper emc-cio-it-as-a-service-wp Whitepapers