En los capítulos anteriores, completamos una discusión general de los programas CGI. Aquí, ofrezco un programa de demostración simple como resumen del contenido anterior.
Para utilizar este programa, necesita la última versión beta de OmniHTTPD: OmniHTTPD 2.0b1 (beta 1) para Windows 95/NT. Si no lo tienes, puedes descargarlo aquí (oh20b1.zip).
El método para instalar OmniHTTPD es el mismo que en la primera lección, por lo que no lo abordaré aquí. Solo hablaré sobre algunos problemas de configuración en esta versión aquí:
Abra el cuadro de diálogo de configuración de propiedades OmniHTTPD, use el botón Configuración global del servidor web, vaya a la página Externa y elimine la configuración .cgi. Cuando no se eliminan, los programas CGI con cgi como extensión se procesan como programas Perl; en nuestro curso, la extensión del programa CGI en el lenguaje Perl es .pl y la extensión del programa CGI compilado es .cgi. La configuración debe modificarse así.
En esta versión de OmniHTTPD, la compatibilidad con comandos SSI (Server Side Include) se ha mejorado enormemente en comparación con versiones anteriores, y se admiten comandos como include y exec. En el programa de demostración, utilicé estos comandos.
Después de descargar (ex8.zip), contiene tres archivos: index.shtml, makelog.cpp y makelog.exe. index.shtml es un script que contiene comandos SSI, cópielo en el directorio c:httpdhtdocs; makelog.exe es un programa CGI, cópielo en el directorio c:httpdcgi-bin es el archivo fuente de makelog. exe, si desea modificar la compilación, debe utilizar un compilador de 32 bits, como VC, de lo contrario no se puede utilizar.
Además, debe realizar una modificación en la configuración de OmniHTTPD: seleccione Configuración virtual predeterminada y cambie el Índice predeterminado a index.shtml en la página del Servidor. De esta manera, cuando escribe http://localhost en el navegador, OmniHTTPD carga automáticamente index.shtml.
Cree otro documento WEB y guárdelo en el directorio c:httpdhtdocs con el nombre de archivo index.html. Cuando utiliza un navegador para acceder a localhost, index.shtml primero llama a makelog.exe para almacenar la información de acceso del usuario y luego llama a index.html para mostrarla en el navegador. La información de acceso del usuario se almacena en el archivo de registro de usuario en el directorio c:httpdcgi-bin.
Este ejemplo utiliza las variables de entorno básicas y la tecnología SSI en la especificación CGI. Estúdielo detenidamente.
4. Base de datos
Entre las aplicaciones CGI, las aplicaciones de bases de datos reflejan mejor las potentes funciones de los programas CGI. Hay muchas bases de datos en Internet y la demanda de aplicaciones WEB de estas bases de datos también está aumentando (ya sea por parte de empresas o usuarios). Se puede decir que la WEB en sí es una base de datos enorme. Cómo organizar eficazmente estas enormes colecciones de datos y publicarlas en la WEB es un tema que CGI y los sistemas de bases de datos resuelven conjuntamente.
Si desea clasificar aplicaciones CGI y de bases de datos, existen diferentes métodos de clasificación desde diferentes perspectivas. Por ejemplo, según el tamaño de la base de datos, se puede dividir en base de datos de texto, base de datos local (acceso a Microsoft, etc.) y servidor de base de datos (MS SQL Server, Informix, etc.); Se puede dividir en programas CGI de bases de datos de front-end (donde los usuarios utilizan programas CGI interactivos) y programas CGI de bases de datos de back-end (programas CGI que interactúan con la base de datos), etc. La elección del tamaño de la base de datos generalmente depende del volumen de datos y el costo de las tareas que desea completar; si separar o combinar el front-end y el back-end al programar programas CGI generalmente depende de la complejidad de su procesamiento de datos.
Normalmente, si su conjunto de datos está dentro de unos pocos megabytes y no existen relaciones complejas entre sus registros de datos, puede optar por crear una base de datos con archivos de texto, lo que mantiene los costos al mínimo y tiene una base de datos para archivos de texto. el sistema de gestión (DBMS, es decir, el sistema de gestión de bases de datos) no tiene: si ocurre un error en sus datos, puede transferir su archivo de texto a cualquier editor de texto para recuperarlo, y si ocurre un error en su sistema de base de datos, a menos que sea un experto en bases de datos, De lo contrario será difícil de reparar.
Si su colección de datos es muy grande, o si sus registros de datos tienen relaciones complejas entre ellos, lo mejor es utilizar un sistema de base de datos. El uso de archivos de texto para implementar una base de datos de decenas de megabytes abrumaría a cualquier servidor RISC avanzado. Si utiliza un programa CGI para manejar relaciones complejas entre datos, inevitablemente aumentará la complejidad del programa CGI y ocupará demasiados recursos del servidor. Por otro lado, el uso de las funciones del sistema de base de datos puede simplificar la dificultad del diseño del programa CGI; y mejorar la eficiencia del desarrollo.
Al elegir un sistema de base de datos, debe elegir entre los siguientes aspectos: 1. Plataforma del sistema operativo: debe elegir el sistema de base de datos con el que esté más familiarizado y también debe elegir la plataforma del sistema operativo con la que esté más familiarizado. De esta manera puedes evitar errores. 2. Precio: Debes elegir el más barato entre varios sistemas de bases de datos que puedan completar tu trabajo. Aquí te puedo hablar de un sistema de bases de datos gratuito llamado MiniSQL. Debe ejecutarse en una plataforma UNIX o Linux. Existe un sistema de base de datos gratuito para la plataforma Windows. Si alguien lo sabe, dímelo y te lo contaré en futuros cursos.
Nuestro curso trata sobre el uso de Delphi para desarrollar programas CGI, y Delphi proporciona el sistema de base de datos Interbase Server. Por lo tanto, aquí hablaré principalmente sobre el desarrollo de programas CGI utilizando el sistema de base de datos. Al mismo tiempo, dado que el sistema de base de datos reduce una gran cantidad de trabajo de codificación, combiné el CGI de front-end y el CGI de back-end en uno para completar el procesamiento de entrada del usuario y las operaciones de la base de datos en un programa CGI. Pero en otras plataformas del sistema, es posible que no se utilice este método. Se pide a los lectores que tomen sus propias decisiones basándose en la discusión anterior.
Aquí, me gustaría explicar varios CGI diferentes y sus diferencias en su uso en nuestro OmniHTTPD:
CGI estándar: el CGI estándar debe colocarse en el directorio establecido por /cgi-bin/ y puede modificarse en cualquier momento cuando OmniHTTPD se esté ejecutando.
Win CGI: CGI aplicado en sistemas Windows debe colocarse en el directorio establecido por /cgi-win/. Este CGI utiliza un archivo INI para obtener solicitudes del navegador del cliente, en lugar de utilizar variables de entorno o entradas estándar. Generalmente no utilizamos este tipo de CGI.
ISAPI: una especificación CGI que utiliza bibliotecas de enlaces dinámicos propuestas por Microsoft.
NSAPI: una especificación CGI que utiliza bibliotecas de enlaces dinámicos propuestas por Netscape.
Cada una de estas especificaciones CGI tiene sus propias características: el CGI estándar se puede escribir utilizando programas ejecutables o lenguajes de script como Perl, pero es ineficiente y consume muchos recursos. Cada solicitud CGI tendrá una instancia del programa CGI. ejecutándose en el servidor. Win CGI tiene las mismas características que Stardand CGI. ISAPI y NSAPI son altamente eficientes y residen en la memoria, y no importa cuántas solicitudes CGI haya, solo hay una instancia ejecutándose en el servidor. Solo el conjunto de datos correspondiente a esta instancia es diferente, pero este tipo de CGI no es fácil. para depurar porque debe estar en el servidor WEB. Las actualizaciones solo están disponibles cuando el software está cerrado.
En la próxima conferencia, daré un programa de demostración para la Página Blanca. La página blanca es una lista de direcciones de correo electrónico. Puede permitir a los usuarios consultar, editar, agregar y eliminar esta lista a través de un navegador WEB. En esta conferencia, el programa de demostración que di es solo una operación de consulta, y otras operaciones se describirán en cursos posteriores.
Este programa de demostración está construido sobre la base de datos de Borland Interbase Server y desarrollado en Delphi. Durante el desarrollo, elegí CGI estándar porque es más fácil de depurar.
Nuestro programa está escrito utilizando Stardand CGI, que se puede depurar fácilmente. Una vez que la depuración sea exitosa, se puede cambiar fácilmente a ISAPI/NSAPI en Delphi con solo una declaración (¡qué tal, Delphi es muy bueno!).