Home  +  Forums  +  C++ and Sockets  +  C++ and SQL: MySQL, sqlite, ODBC  +  Miscellaneous Projects
Logo
~Sockets~
~Projects~
~Contact~
english

cgi++ , Como manejarlo.


Common Gateway Interface implementado mediante C++

Porque usar cgi como un método de implementación de un website dinámico cuando hay herramientas tan poderosas y fáciles de usar como PHP y ASP?

Usando cgi, en el peor de los casos, solo conseguiríamos un ejecutable perdido por el directorio cgi-bin/ . O peor aun , un monton de ejecutables. Si quisieses cambiar el "layout" (aspecto) de la página(s) tendriamos que volver a retocar y compilar los ejecutables.

Por supuesto...un programa cgi puede estar escrito en algun lenguaje de script, donde no sea necesaria la re-compilación, haciéndolo mas facil de mantener y actualizar.


Usando C++

Usando características de programacion orientada a objetos como la inheritance hacen que el desarrollo de los programas CGI sean rápidos y eficaces..

Este documento intentará describir el método cgi++ de cómo desarrollar un website dinámico.

Que es cgi++?

Es una pequeña colección de clases desarrolladas con la intención de hacer un website dinámico facil y rápidamente.

Descargate el archivo cgi++-1.1.tar.gz 2004-07-09

Changelog

Documentación del Código Fuente (generado por Doxygen). Selecciona"File List" de la página de indices del Doxygen para ver una lista de todos los archivos del ejemplo. Luego selecciona "[code]" para examinar el código fuente de ese archivo. los archivos que empiezan en minúsculas son normalmente el punto de inicio principal (main() starting point), y los archivos que empiezan con mayúsculas, suelen ser los de la Clase con el mismo nombre de ese archivo.

Viejas Versiones

Descargate el archivo cgi++-1.0.tar.gz

Ahora, ensuciate un poco las manos

A partir de aqui todo es documentación técnica.

Cookies, POST, y otras cosas- la clase Web

Una implementación de una aplicación cgi++ comienza con la creación de una clase con inherits de la clase Web . La clase Web contiene código para interpretar la información del servidor web (apache / IIS) como las cookies y los Form Posts(utilizando para ello las clases Cookies y Form ).

Otra clase base es la MenuWeb . Como complemento de la clase Web con funciones de menú automáticas. El ejemplo que tienes mas abajo utiliza esta clase como clase base.

La clase Web es inicializada con la Cookie de dominio y la ruta de la Cookie, para ser usada en las cabeceras http 'Set-Cookie:' .

Hay 4 métodos que necesitan ser implementados en la inherited Web class:

Estos métodos son llamados en orden de arriba a abajo, por otro método llamado Execute ( ).

Resumiendo, hacen lo que su nombre indica. Todos los métodos tienen las implementaciones que podrian, y a veces deberán, ser usadas.

Y que pasa con el contenido? - La clase WebForm

La clase Web solo provee del entorno de trabajo de una aplicación cgi. Asi que donde pondremos el código para las paginas y sus resultados? Las páginas actuales serán implementadas creando una clase inherited de la clase WebForm .

Es una clase muy pequeña que solo necesita de la implementación de dos métodos para funcionar:

El método Process ( ) es llamado una vez leido la entrada en la página mostrada(si hay alguna, si no hay form...este método estará vacío).

El método Display ( ) crea el código html actual para mostrar la página resultante.

Una vez que la clase WebForm ha sido creada, es añadida como una variable miembro de la clase Web que hemos mencionado antes, y registrada en el constructor de la clase Web . Es registrada una vez mediante el método de la clase Web llamado RegWebForm, para activar el método Process ( ) que será llamado automáticamente. Si usamos MenuWeb como la clase padre, la clase WebForm estará registrada tambien en el método de la clase MenuWeb llamado AddMenuItem ( ) para hacer que aparezca en el menú automatizado.

El Ejemplo

En fin...una sola linea de código dice mas que 1000 palabras, no?

Este ejemplo es un excelente editor para el Wolfshade MUD.

La clase MenuWeb es usada como clase padre para la Web class (llamada WolfshadeWeb). La clase WebForm es primero inherited por una clase BaseForm la cual implementa muchos de los elementos que se suelen mostrar y comúnmente utilizados. La clase BaseForm es entonces inherited por las actuales clases de presentación.

La clase WolfshadeWeb usa una conexion de base de datos MySQL implementada usando las clases del MySQL C API C++ Wrapper.

Documentacion de Ejemplo
Y
El ejemplo, (ya era hora no?)

Diagrama de la Clase

Class Diagram
Page, code, and content Copyright (C) 2021 by Anders Hedström