Nos capítulos anteriores, concluímos uma discussão geral dos programas CGI. Aqui, apresento um programa de demonstração simples como um resumo do conteúdo anterior.
Para usar este programa, você precisa da versão beta mais recente do OmniHTTPD: OmniHTTPD 2.0b1 (beta 1) para Windows 95/NT. Caso não o tenha, você pode baixá-lo aqui (oh20b1.zip).
O método de instalação do OmniHTTPD é o mesmo da primeira aula, então não vou entrar nisso aqui. Vou apenas falar sobre alguns problemas de configuração nesta versão aqui:
Abra a caixa de diálogo de configurações de propriedade OmniHTTPD, use o botão Configuração Global do Servidor Web, vá para a página Externa e exclua as configurações .cgi. Quando não excluídos, os programas CGI com cgi como extensão são processados como programas Perl em nosso curso, a extensão do programa CGI na linguagem Perl é .pl e a extensão do programa CGI compilado é .cgi. as configurações devem ser modificadas assim.
Nesta versão do OmniHTTPD, o suporte para comandos SSI (Server Side Include) é bastante aprimorado em comparação com versões anteriores, e comandos como include e exec são suportados. No programa de demonstração, usei esses comandos.
Após o download (ex8.zip), ele contém três arquivos: index.shtml, makelog.cpp e makelog.exe. index.shtml é um script que contém comandos SSI, copie-o para o diretório c:httpdhtdocs; makelog.exe é um programa CGI, copie-o para o diretório c:httpdcgi-bin makelog.cpp é o arquivo de origem do makelog; exe, se quiser modificar a compilação, você deve usar um compilador de 32 bits, como o VC, caso contrário, ele não poderá ser usado.
Além disso, você precisa fazer uma modificação nas configurações do OmniHTTPD: selecione Configuração Virtual Padrão e altere Índice Padrão para index.shtml na página Servidor. Desta forma, ao digitar http://localhost no navegador, o OmniHTTPD carrega automaticamente index.shtml.
Crie outro documento WEB e salve-o no diretório c:httpdhtdocs com o nome de arquivo index.html. Quando você usa um navegador para acessar o host local, index.shtml primeiro chama makelog.exe para armazenar as informações de acesso do usuário e, em seguida, chama index.html para exibi-las no navegador. As informações de acesso do usuário são armazenadas no arquivo userlog no diretório c:httpdcgi-bin.
Este exemplo usa variáveis de ambiente básicas e tecnologia SSI na especificação CGI. Estude-o com atenção.
4. Banco de dados
Entre os aplicativos CGI, os aplicativos de banco de dados refletem melhor as funções poderosas dos programas CGI. Existem muitos bancos de dados na Internet, e a demanda por aplicações WEB desses bancos de dados também está aumentando (seja por parte de empresas ou usuários). Pode-se dizer que a própria WEB é um enorme banco de dados. Como organizar efetivamente essas enormes coleções de dados e publicá-las na WEB é um tema que o CGI e os sistemas de banco de dados resolvem em conjunto.
Se você deseja classificar aplicativos CGI e de banco de dados, existem diferentes métodos de classificação de diferentes perspectivas. Por exemplo, de acordo com o tamanho do banco de dados, ele pode ser dividido em banco de dados de texto, banco de dados local (Microsoft Access, etc.) e servidor de banco de dados (MS SQL Server, Informix, etc.); podem ser divididos em programas CGI de banco de dados front-end (com usuários que usam programas CGI interativos) e programas CGI de banco de dados back-end (programas CGI que interagem com o banco de dados), etc. A escolha do tamanho do banco de dados geralmente depende do volume de dados e do custo das tarefas que você deseja concluir. Separar ou combinar o front-end e o back-end ao programar programas CGI geralmente depende da complexidade do processamento de dados;
Normalmente, se o seu conjunto de dados estiver dentro de alguns megabytes e não houver relacionamentos complexos entre seus registros de dados, você poderá optar por usar um arquivo de texto para construir o banco de dados, o que pode manter o custo mínimo, e o arquivo de texto tem um banco de dados Vantagens que o sistema de gerenciamento (SGBD, ou seja, DataBase Management System) não possui: Se ocorrer um erro em seus dados, você pode transferir seu arquivo de texto para qualquer editor de texto para recuperação, e se ocorrer um erro em seu sistema de banco de dados, A menos que você seja um especialista em banco de dados, Caso contrário, será difícil reparar.
Se a sua coleta de dados for muito grande ou se os seus registros de dados tiverem relacionamentos complexos entre eles, é melhor usar um sistema de banco de dados. Usar arquivos de texto para implementar um banco de dados de dezenas de megabytes sobrecarregaria qualquer servidor RISC avançado. Se você usar um programa CGI para lidar com relacionamentos complexos entre dados, isso inevitavelmente aumentará a complexidade do programa CGI e ocupará muitos recursos do servidor. Por outro lado, o uso das funções do sistema de banco de dados pode simplificar a dificuldade de design do programa CGI; e melhorar a eficiência do desenvolvimento.
Ao escolher um sistema de banco de dados, você precisa escolher entre os seguintes aspectos: 1. Plataforma do sistema operacional: Você deve escolher o sistema de banco de dados com o qual está mais familiarizado e também deve escolher a plataforma do sistema operacional com a qual está mais familiarizado. desta forma você pode evitar erros. 2. Preço: Você deve escolher o mais barato entre os vários sistemas de banco de dados que podem completar seu trabalho. Aqui, posso falar sobre um sistema de banco de dados gratuito chamado MiniSQL. Ele deve rodar em plataforma UNIX ou Linux. existe um sistema de banco de dados gratuito para a plataforma Windows. Se alguém souber, por favor me diga e eu contarei em cursos futuros.
Nosso curso é sobre como usar Delphi para desenvolver programas CGI, e Delphi fornece o sistema de banco de dados Interbase Server. Portanto, falarei principalmente sobre o desenvolvimento de programas CGI usando o sistema de banco de dados aqui. Ao mesmo tempo, como o sistema de banco de dados reduz muito trabalho de codificação, combinei o CGI front-end e o CGI back-end em um para completar o processamento de entrada do usuário e as operações do banco de dados em um programa CGI. Mas em outras plataformas de sistema, este método não pode ser usado. Os leitores são convidados a tomar as suas próprias decisões com base na discussão anterior.
Aqui, gostaria de explicar vários CGIs diferentes e suas diferenças no uso em nosso OmniHTTPD:
CGI padrão: O CGI padrão deve ser colocado no diretório definido por /cgi-bin/ e pode ser modificado a qualquer momento quando o OmniHTTPD estiver em execução.
Win CGI: O CGI aplicado em sistemas Windows deve ser colocado no diretório definido por /cgi-win/. Este CGI usa um arquivo INI para obter solicitações do navegador do cliente, em vez de usar variáveis de ambiente ou entrada padrão. Geralmente não usamos esse tipo de CGI.
ISAPI: Uma especificação CGI que usa bibliotecas de vínculo dinâmico propostas pela Microsoft.
NSAPI: Uma especificação CGI que usa bibliotecas de vínculo dinâmico propostas pela Netscape.
Cada uma dessas especificações CGI tem suas próprias características: CGI padrão pode ser escrito usando programas executáveis ou linguagens de script como Perl, mas é ineficiente e ocupa muitos recursos. Cada solicitação CGI terá uma instância do programa CGI. rodando no servidor. Win CGI tem os mesmos recursos do Stardand CGI. ISAPI e NSAPI são altamente eficientes e residentes na memória, e não importa quantas solicitações CGI existam, há apenas uma instância em execução no servidor. Apenas o conjunto de dados correspondente a esta instância é diferente, mas esse tipo de CGI não é fácil; para depurar porque deve estar no servidor WEB As atualizações só estão disponíveis quando o software é fechado.
Na próxima palestra darei um programa de demonstração do White Page. White Page é uma lista de endereços de e-mail. Você pode permitir que os usuários consultem, editem, adicionem e excluam esta lista por meio de um navegador da WEB. Nesta palestra, o programa de demonstração que apresentei é apenas uma operação de consulta, e outras operações serão descritas nos cursos subsequentes.
Este programa de demonstração é construído no banco de dados Borland Interbase Server e desenvolvido em Delphi. Durante o desenvolvimento, escolhi CGI padrão porque é mais fácil de depurar.
Nosso programa é escrito usando Stardand CGI, que pode ser facilmente depurado. Após a depuração ser bem-sucedida, ela pode ser facilmente alterada para ISAPI/NSAPI no Delphi com apenas uma instrução (que tal, Delphi é muito bom!).