|
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.
|
|
Diagrama de la Clase
|