Desenvolvimento de Aplicações para Internet Atualmente, há uma grande demanda pela construção de aplicações na Internet. Há pouco tempo existiam na WEB, na sua grande maioria, documentos estáticos (páginas em html) com dados institucionais. Hoje já é bastante comum os sites conterem páginas html e também aplicações que disponibilizam informações obtidas em tempo real e em conformidade com a consulta do usuário. É perfeitamente possível a construção de aplicações que alimentem um banco de dados, além de recuperar as informações existentes nele. Porém, é preciso fazer algumas ressalvas sobre estas aplicações para WEB, sobre as suas limitações atuais, a comparação com outras soluções tecnológicas, etc. Diferenças entre aplicações para Internet e aplicações Win32 A grande maioria das aplicações atualmente disponíveis no mercado são as aplicações Win32 (as tradicionais aplicações "for Windows"). Elas utilizam as API’s (Aplication Program Interface) do Windows e o próprio kernel do sistema operacional. Isso possibilita que uma aplicação tenha uma interface bastante elaborada e sofisticada. Entre elas podem ser citadas as desenvolvidas com Access, Delphi e Visual Basic. Quanto às aplicações para Internet, apesar de terem uma interface gráfica, esta não é tão sofisticada como a de uma aplicação Win32. A interface da aplicação está adstrita aos recursos disponibilizados pela linguagem HTML e pelo navegador utilizado pelo usuário da aplicação. Evidentemente existem outras grandes diferenças entre estes dois tipos de aplicações, como, por exemplo, a inviabilidade de se criar conexões persistentes entre a aplicação WEB e o Banco de Dados. Porém, a que causa maior impacto para o usuário final é a interface imposta pela WEB. Dicas para projetar aplicações para Internet Há algumas assertivas que precisam ser observadas no projeto de uma aplicação WEB. Já no início do projeto deve haver a preocupação com a interface da aplicação. Quando se projetam as telas para uma aplicação Win32 muita coisa pode ser feita numa tela só. Numa aplicação Internet isso pode e tem que se desdobrar em várias telas. Neste exemplo de aplicação Win32, quando o usuário seleciona uma Unidade da Federação, tal evento dispara uma consulta no banco de dados, que retorna para a mesma tela, a relação dos respectivos municípios. O usuário entra com os demais dados e após clicar sobre o botão gravar, a tela será limpada exibindo alguma mensagem que a informação foi gravada. Como ficaria esta mesma tela numa interface para WEB? Ela teria que se desdobrar em pelo menos três telas, como pode-se observar na ilustração seguinte. Na primeira tela, o usuário deve selecionar a Unidade da Federação e quando for clicado no botão Avançar, estará sendo chamada a próxima tela. Antes de ser exibida a segunda tela, é disparada uma consulta no banco de dados, que retorna os dados necessários (os municípios respectivos) para que então se exiba a tela. Sendo exibida a segunda tela, o usuário seleciona então o município, preenche os demais dados e ao clicar em gravar, as informações serão gravadas no banco de dados quando o código da última tela estiver sendo interpretado e executado pelo servidor. Então, são exibidos os dados para o usuário. Percebe-se que, se eventualmente o usuário quiser mudar de Unidade de Federação na segunda tela, ele deverá reiniciar a alimentação de dados desde a primeira tela. Isto se deve ao fato que somente no momento em que é carregada a primeira tela é que ocorre a consulta das Unidades da Federação no banco de dados. Não existe confrontação dos dados que estão sendo exibidos com os do banco de dados, sem mudar de tela. Este processamento e transação só ocorrem na mudança de tela. A interação com os dados é semelhante a de uma aplicação desenvolvida em Natural no Mainframe. O usuário final tem que ter prévio conhecimento de que a interface da aplicação vai ser diferente, para que não se crie a expectativa de que o usuário terá na Web uma aplicação com a mesma interface de aplicações Win32. Numa aplicação para Internet, o mouse é essencial na interface. Não são utilizadas teclas de atalho numa aplicação Internet. Quanto mais sofisticada for a interface da aplicação para Internet, mais dependente da versão do browser ela ficará. A interface do browser ainda é bastante limitada e a dificuldade é perceptível inclusive nos sites mais conhecidos da Internet. Enfim, por enquanto não há uma solução ideal de interface de uma aplicação Internet, que satisfaça plenamente às expectativas dos usuários. O comportamento do ambiente Internet não é tão estável (hardwares e softwares heterogêneos, instabilidade, congestionamentos na rede, etc.) como o de uma rede local. Disso decorre que o banco de dados tem que estar muito bem projetado pois, com certeza, existirão transações incompletas. O que atrasa o desenvolvimento de uma aplicação para Internet? O que fazer para agilizar o desenvolvimento? Já vimos que uma tela de uma aplicação Win32 se desdobra em várias telas na aplicação Internet e isto acarreta um maior tempo no desenvolvimento. Em cada tela, as consistências de tipos de dados são feitas em JavaScript. Apesar de existirem ferramentas que geram o código JavaScript para diferentes necessidades, a verdade é que sempre existem rotinas que devem ser implementadas manualmente. Numa ferramenta de desenvolvimento de aplicação Win32, basta clicar com o botão direito do mouse e informar a máscara, tipo de dado, etc., que a tela já estará validando corretamente a alimentação de dados. O Banco de Dados tem que ser quase perfeito. "A ocorrência de dados numa tabela tem que ser tão uniforme que não existam campos nulos". Os dados de uma tabela têm que ser uniformes e devem obedecer às mesmas regras. Apesar de estas recomendações serem uma verdade em qualquer tipo de aplicação, se estas não forem seguidas, podem inviabilizar a construção de uma aplicação na Internet. Por exemplo: armazenar histórico na mesma tabela que contém os dados é uma heresia. Em comparação com o desenvolvimento de uma aplicação Win32, o programador que desenvolve para WEB dispõe de menos recursos para superar eventuais atropelos no modelo físico do banco de dados. Nunca se deve esgotar os recursos já na fase de análise. Artimanhas já na análise esgotam as habilidades do programador. As rotinas vislumbradas pelo analista têm de ser de implementação simples e as dificuldades de implementação devem ser resolvidas já na fase de análise. Deve-se deixar para a fase de construção da aplicação a utilização de artifícios ardis. Para ilustrar tal situação, vejamos o exemplo a seguir. Ambos os modelos de dados são uma proposta para armazenamento de dados de empréstimos efetuados numa biblioteca e o histórico dos empréstimos já efetuados e devolvidos dos leitores. No primeiro modelo, os dados do empréstimo e do histórico são armazenados na mesma tabela. A diferença entre um registro de dados históricos e um registro de empréstimo pendente de devolução, é que naquele (histórico), o campo DATADEVOLUCAO é uma data válida e neste, o campo contém um valor nulo (NULL). Aparentemente este modelo resolve o problema, mas na verdade ele traz uma série de dificuldades e trabalho excessivo para o desenvolvedor. Neste modelo, fica mais difícil controlar a duplicidade de registros na tabela de empréstimos e as regras aplicáveis à tabela EMPRESTIMO têm de ser mais brandas. A recuperação da informação também é mais confusa e mais lenta, já que a tendência neste modelo é que exista um pequeno número de registros de empréstimos pendentes de devolução em relação ao número de registros do histórico, todos eles numa única tabela. Na implementação, o desenvolvedor tem a possibilidade de implementar, no banco de dados, stored procedures (um pouco mais complexas) que tratem adequadamente os dados, ou então, implementar rotinas na aplicação (na camada de regras de negócio) que tratem estes dados. Enfim, o problema terá que ser resolvido pelo desenvolvedor. Já no segundo modelo, a tabela EMPRESTIMO contém apenas dados dos empréstimos pendentes de devolução. Neste caso, pode-se definir como chave primária os campos CODLEITOR e CODLIVRO e, conseqüentemente, há restrição quanto aos registros dúplices. Quando for efetuada a devolução do livro, o registro é apagado na tabela EMPRESTIMO e inserido na tabela HISTORICO. É possível a implementação de regras bem rígidas para a tabela EMPRESTIMO dentro do próprio sistema gerenciador de banco de dados. Neste modelo, grande parte dos problemas foram resolvidos na modelagem de dados, agilizando a construção do sistema. O programador não terá de se preocupar em criar rotinas para tratar de maneira correta os dados armazenados. O sistema gerenciador de banco de dados impedirá que qualquer aplicação ou rotina mal feita deixe os dados inconsistentes. Conclusão: os problemas foram resolvidos já na fase de análise. Numa aplicação Internet, tem-se pouco controle do que acontece na máquina do usuário final. A melhor alternativa para se construir uma aplicação confiável é a construção de um banco de dados a prova de qualquer falha. Terminada esta abordagem sobre o banco de dados restam outros dois detalhes que também devem ser observados. A WEB tem fama de ser uma mídia nova para novos artistas. Mas, programação visual sofisticada numa aplicação, atrapalha e atrasa o desenvolvimento. Muitos interlocutores no desenvolvimento de aplicações também atrasam. O ideal é ter um único analista mantendo contato com o cliente e intermediando com a equipe de desenvolvimento. O que é ASP? O que é uma linguagem "script"? Active Server Pages é uma tecnologia da Microsoft para construção de aplicações na Internet. Uma página ASP é uma rotina da aplicação. É um arquivo que contém código HTML, JavaScript e Visual Basic Script. Visual Basic Script e JavaScript são linguagens que são interpretadas por outro programa. Seus códigos não são compilados. Essas linguagens (scripts) são largamente utilizadas na Internet. Na CELEPAR, optamos por utilizar Visual Basic Script para as rotinas que são interpretadas pelo servidor WEB e JavaScript para as rotinas que são interpretadas pelo navegador (browser) do usuário. Portanto, no caso da CELEPAR, as aplicações ao serem utilizadas, têm dois momentos distintos: • Na mudança de tela (ao carregar uma página ASP) o código Visual Basic Script é interpretado pelo servidor, disparando consultas e atualizações no banco de dados, quando necessárias. Tudo isto é processado por computadores remotos, não do usuário. • Ao clicar em algum elemento visual da tela no browser, como por exemplo um botão "OK", o usuário poderá estar disparando rotinas JavaScript, que farão a validação e checagem de alguns campos na tela. Mas, neste momento, nada acontece no servidor. Desvantagens de uma solução Internet Houve uma involução na interface das aplicações. Interface Win32, que desde os primórdios do Windows vem sendo aprimorada, é indubitavelmente melhor do que interface na WEB, que está há poucos anos sendo utilizada. As restrições da interface forçam o desdobramento de uma tela em várias. O uso da aplicação é mais enfadonho. Telas com interfaces sofisticadas, gráficos complexos, drag and drop, quase inexistem na WEB. Elas até podem ser implementadas, mas exigem um grande desforço para isto e exigem a instalação de pluggins no navegador (browser) do usuário final. A estabilidade do ambiente Internet está melhorando dia-a-dia, mas uma aplicação numa rede local ainda é mais estável. Vantagens de uma solução Internet Uma aplicação para Internet pode ser acessada de qualquer lugar do mundo. Evidentemente que isto quase sempre não é uma necessidade. Mas no caso de consultas a bases de dados é interessante. Outrossim, nenhuma outra tecnologia viabiliza isto. Não há necessidade de se distribuir e instalar a aplicação nos computadores do usuário. Ela pode ser facilmente alterada sem provocar transtornos aos usuários. Feita a atualização da aplicação, ela imediatamente passa a ser utilizada na nova versão por todos os usuários. A atualização do banco de dados é feita em tempo real. Disponibilização de dados ao público é mais fácil. Quando a aplicação foi desenvolvida para uma Intranet, fica bastante simples de se disponibilizar consultas aos usuários da Internet, sem grande esforço da equipe de desenvolvimento. Soluções na Internet descentralizam a alimentação de dados. Mesmo que a interface da WEB seja mais lenta e enfadonha do que a de uma aplicação convencional, o fato é que a aplicação pode ser utilizada por qualquer ponto de acesso à Internet. Isto possibilita que a alimentação de dados seja feita por diferentes usuários em locais geograficamente distintos e longíquos. A interface na WEB é intuitiva. O esforço dispendido para se aprender a usar uma aplicação Internet é menor. A princípio, uma aplicação feita para rodar na Internet, é independente da configuração do computador utilizado pelo usuário final. Isso não é uma verdade absoluta, mas é muito mais fácil construir uma aplicação com essas características no ambiente WEB do que uma aplicação Win32. Sistemas inviáveis na Internet Existem sistemas que, por enquanto, são inviáveis de serem construídos ou convertidos para serem utilizados na Internet. Sistemas com interface excessivamente elaborada oferecem muitas dificuldades para serem construídos. Só tornam-se possíveis com um prazo prolongado e, mesmo assim, corre-se o risco de não atenderem às expectativas do cliente. O mesmo acontece com sistemas em que a alimentação de dados tem de ser extremamente rápida, com teclas de atalhos e confrontação imediata dos dados do formulário com o banco de dados. Os sistemas que exigem relatórios complexos também oferecem dificuldades. O browser não é um gerador de relatórios e a implementação destes numa aplicação para Internet é feita manualmente. Soluções híbridas Quando uma aplicação exige telas para uma alimentação rápida dos dados e a confrontação imediata destes com a base de dados, pode-se fazer este aplicativo Win32 e as consultas com a interface WEB. Grande parte dos usuários está interessado apenas na consulta aos dados. A alimentação destes é realizada por outro conjunto de usuários bem mais restrito. Não há empecilho algum em se construir aplicações nestes moldes. Qual versão de navegador (browser) utilizar? Já foi dito que quanto mais sofisticada for a interface da aplicação para Internet, mais dependente da versão do browser ela ficará. Quando os usuários do sistema são um número determinado e restrito de pessoas, pode-se implementar a aplicação visando a sua utilização numa única versão de browser. É importante, no levantamento de dados considerar tal aspecto, para, no momento oportuno, definir qual browser será utilizado. Quando a aplicação será utilizada por pessoas não determinadas e em número não definido, é previsível que estes utilizem as diferentes versões de navegadores disponíveis no mercado. Para se construir uma aplicação que atenda a estes requisitos é importante que os testes sejam feitos em diferentes versões de navegadores. Conclusão Não era objetivo deste artigo exaurir todas as questões concernentes ao desenvolvimento de aplicações para Internet. Muitos outros detalhes teriam de ser abordados quando da utilização de outras tecnologias. E, também, muitos dos problemas encontrados no desenvolvimento de aplicações Internet são resolvidos com o simples cumprimento dos velhos preceitos de análise de sistemas. Autor: Frediani Bartel - GPS