O Delphi e a Internet – Primeiro artigo da série

Criar verdadeiras aplicações, incluindo acesso a bancos de dados, utilizando a tecnologia da internet – este parece ser o mais novo sonho de quase programador Delphi.

Sem dúvida, a internet é uma tecnologia cada vez mais difundida e utilizada. Hoje ela não está voltada unicamente para a utilização pessoal, como ocorria há algum tempo atrás. Ao contrário, um crescente número de empresas a utilizam como ferramenta de trabalho. E graças aos milhões que por ela navegam, a internet tornou-se um poderoso canal de markenting. Assim, não é de se estranhar que tantos programadores estejam ansiosos para dar os primeiros passos em direção a este mercado.

Mas não se preocupe. Usaremos o espaço em WWW.ALFAMICRO.COM.BR para ajudá-lo neste objetivo. Através de nossos artigos mostraremos que criar aplicações para internet não é nenhum sonho, mas de fato, algo plenamente exequível. Naturalmente não será possível fazê-lo em apenas um artigo, mas forneceremos toda a informação necessária em alguns deles. Visite nosso site com frequência, e cresça profissionalmente.

 

ENTENDENDO O MECANISMO

Muita tecnologia tem sido incorporada na rede mundial, a internet. No entanto, apesar de tanta tecnologia, infindáveis palestras e cursos, e intermináveis livros sobre o assunto, a base tecnológica de sustentação da grande rede é decepcionantemente simples. Dois agentes estão envolvidos no processo: o "Servidor Web" e o "Cliente Web". Estes dois estabelecem uma conexão entre si, através de um determinado protocolo de comunicação (que no caso é o HTTP). O cliente faz requisições e o servidor as responde. O tráfego de dados entre o cliente e o servidor não passa de puro e simples texto ASCII. Em suma: o cliente envia uma requisição em forma de texto para o servidor, e recebe do servidor uma resposta em forma texto também.

O protocolo de comunicação, como já disse é o HTTP. Um protocolo nada mais é do que um padrão de comunicação. Por exemplo, os idiomas são protocolos. Entendemos o que os outros falam e escrevem porque estes obedecem a um padrão, ou a um protocolo, que em nosso caso é a língua portuguesa. O mesmo se dá com o protocolo HTTP. Textos em formato HTML são trocados entre o servidor e o cliente através deste protocolo, e graças a isto estes dois agentes podem "entender-se", apesar de eventualmente estarem rodando em equipamentos totalmente diferentes.

Um grande problema para aplicações na internet que acessam bancos de dados é que o servidor e o cliente não permanecem continuamente conectados. A comunicação é feita através de requisições (requests) do cliente e respostas (response) do servidor. Mas veremos posteriormente como o Delphi resolve este problema.

 

CGI

Inicialmente, os servidores web exibiam apenas páginas HTML estáticas. A manutenção destas páginas, no entanto, tornou-se cada vez mais complexa ao passo que estas cresciam em número. O mercado passou a trabalhar no sentido de criar uma interação mais dinâmica entre o cliente e o servidor web. Imagine, por exemplo, uma aplicação web onde o cliente web (o browser) passasse o código de um usuário para o servidor, e o servidor tivesse que retornar para o cliente web o extrato deste usuário. No esquema de páginas HTML estáticas isto seria simplesmente impossível.

Com o objetivo de solucionar este tipo de problema foi implementado ao servidor web o suporte a CGI, que significa Common Gateway Interface. Com o CGI era possível ao servidor receber uma informação do cliente web, processá-la, e retornar uma página HTML montada na hora, especificamente para atender àquela requisição. Mas o que é realmente este tal CGI? Nada mais nada menos do que um simples executável. Sim, um executável que roda no servidor, um executável como qualquer outro.

Assim, voltando ao nosso exemplo, uma página HTML estática pede ao usuário o seu código. Esta página chama o executável no servidor, passando para ele o código como parâmetro. O executável passa a rodar no servidor, e abre um banco de dados qualquer, localiza dos dados referentes ao código, monta uma página HTML na hora incluindo estes dados, e a devolve para o cliente web (o browser do usuário), que feliz da vida consulta seu extrato. Ou o próprio usuário poderia invocar o executável diretamente através de seu browser, informando algo assim no endereço URI:

http://www.alfamicro.com.br/teste.exe?0001

Onde "teste.exe" é o executável no servidor, e "0001" é o suposto código do usuário. Se houvesse realmente este executável neste endereço (o que de fato não há), seu browser receberia uma página HTML contendo o extrato do cliente cujo código é "0001".

Parece uma maravilha este CGI, não é mesmo? Pode parecer, mas não é. Embora tenha sido amplamente adotado, rodar um executável no servidor web envolve diversos problemas. O principal deles é que cada cliente web que invoca este executável, cria uma instância diferente do mesmo. Ou seja, se 50 pessoas apontam seus browser’s para um executável no servidor, isto significa que este executável será carregado 50 vezes. Seria algo como clicar 50 vezes no ícone de um programa no Windows, carregando-o as 50 vezes na memória. A performance do servidor cai vertiginosamente, podendo chegar praticamente ao estado de inoperância.

 

ISAPI e NSAP

Mas não precisa ficar preocupado, porque a tecnologia web não parou por ai. As duas maiores empresas mundiais ligadas a internet, a Microsoft e a Netscape, trabalharam para resolver este problema. Criaram seus próprios padrões de CGI aprimorados. O padrão da Microsoft foi denominado como Internet Server Application Programming Interface (ISAPI), ao passo que o padrão da Netscape foi chamado de Netscape Application Programming Interface (NSAPI).

Talvez esteja se perguntando agora o que significam estes padrões para nós que somos programadores? Não são nada mais do que DLL’s. Uma das principais diferenças entre uma DLL e um EXE é que se uma DLL for usada por cinco aplicações diferentes, ela será carregada na memória apenas uma vez, e ficará servindo simultaneamente às cinco aplicações. Isto representa uma grande economia de recursos do computador. E com base nisto, os padrões ISAPI e NSAPI são na verdade a inclusão da capacidade de executar DLL’s respectivamente nos servidores web da Microsoft e da Netscape.

A lógica de funcionamento é idêntica ao do padrão CGI, sendo a única diferença o fato de que a DLL é carregada uma única vez no servidor, não importando quantos clientes web a estejam usando em um dado momento.

Programar em Delphi dentro dos padrões ISAPI e NSAPI consiste em montar programas em formato DLL e colocá-los disponíveis no servidor web. Estes programas precisam receber parâmetros, processar a informação (incluindo acesso a bancos de dados no servidor) e retornar uma página HTML para o cliente web. O acesso a estas duas API’S é providenciado no Delphi através das units ISAPI.PAS e NSAPI.PAS.

Mas trabalhar com ISAPI ou NSAPI em servidores web ainda não é uma maravilha. O problema é que uma DLL quando carregada no servidor web não pode ser descarregada da memória enquanto o servidor web estiver rodando. Desta forma, não é possível eliminar a DLL do servidor ou substitui-la por uma nova versão (o que acontece muito durante a fase de desenvolvimento) sem antes derrubar o servidor web. No caso do servidor web da Microsoft isto é relativamente fácil. Basta parar o serviço www, substituir a DLL, e reiniciar o serviço novamente. Mas em alguns servidores isto pode envolver reiniciar a máquina servidora. Quando estamos trabalhando em uma máquina de desenvolvimento isto pode parecer muito fácil, mas pense em parar o serviço web de um provedor em produção.

Um outro problema é que se houver um erro na DLL rodando no servidor web, isto pode até causar a paralisação deste servidor. Um erro muito comum que pode ocasionar isto é fazer loop em uma tabela, do tipo While not tabelatal.eof, e esquecer de colocar uma instrução tabelatal.next dentro do loop.

Por isso, aplicações web devem ser testadas ao máximo antes de serem colocadas em produção no servidor web.

No próximo artigo vamos colocar mãos à obra. Criaremos uma pequena aplicação para rodar em um servidor web. É claro que você precisará transformar sua máquina em um servidor web, só para testes. Do contrário não poderá testar suas aplicações.

Se não tem um servidor web (seja da Netscape ou da Microsoft) você pode baixar o Microsoft Personal Web Server do site da Microsoft, em http://microsoft.com.br. Trata-se de um freeware que enquadra-se no padrão ISAPI.

Dúvidas e sugestões sobre o artigo podem ser enviadas para [email protected] .

 

Andre Campos

Hosted by www.Geocities.ws

1