O Modelo de Aplicação Web


 

Quando começamos a trabalhar com o desenvolvimento de aplicações web nos deparamos com diversas tecnologias diferentes, todas tentam oferecer o melhor das possibilidades dentro do que é possível fazer em termos de tecnologia. Essa variedade de tecnologias é o que mais chama atenção nesse modelo de aplicação, ao mesmo tempo é o que gera mais dificuldades para quem começa.

Antes de entender as diversas possibilidades as pessoas deveriam ser apresentadas ao modelo de trabalho proposto pela Web, isso facilitaria muito a adoção, e até mesmo a escolha consciente, de uma tecnologia de implementação. Vamos considerar que tecnologia de implementação é toda a tecnologia que permite desenvolver um sistema baseado em tecnologia Web, dessa forma ASP, PHP, JSP, ColdFusion, e claro HTML além de muitas outras são tecnologias de implementação. Por outro lado temos ainda as tecnologias de base da Web que são o protocolo HTTP e os servidores Web que são capazes de atender requisições em formato HTTP, geralmente na porta 80.

Então é interessante entender que as tecnologias de implementação usam sempre os mesmos recursos de infraestrtura, isto porque em um mundo globalizado e distribuído, a tecnologia web facilita para os administradores de sistemas proteger seus servidores, isto porque através da porta 80 são permitidas trocas de informação baseada em texto, muito mais fáceis de regular. Assim quando um administrador coloca sua máquina na rede abre apenas a porta 80, e bloqueia todas as outras formas de acesso a máquina.

Outra característica interessante, é que as conexões web são bastante voláteis, ou seja, o cliente (geralmente um browser ou navegador web) estabele a conexão, solicita o recurso (normalmente uma página), recebe sua resposta e desconecta. Até aí nenhuma novidade no mundo das redes, no entanto, como os recursos solicitados geralmente são texto (e imagens) essas conexões não duram muito tempo. “Ah mas eu acesso o youtube!” Sim, no entanto a execução de vídeos é servida através de outra conexão, geralmente com outra máquina, ou seja, o HTTP já havia encerrado. Dessa forma o temos alguns pontos a considerar:

  1. O servidor web não sabe de quem é cada requisição que chega, por isso uma aplicação web precisa ter o conceito de sessão.
  2. Trocamos texto entre o servidor e o browser, então a tela que aparece na máquina do cliente não veio do servidor, e sim uma descrição de como a tela deve ser montada.
  3. Não ficam variáveis guardadas na memória do computador do cliente, essa é uma parte quase mística. Quando programamos uma aplicação com interface web, a aplicação fica no servidor, e somente a descrição da tela é enviada para o browser do solicitante, dessa forma toda e qualquer variável que seja manipulada, ficará armazenada na memória do servidor e não na máquina do cliente. Por isso é de extrema importância que haja algum mecanismo de controle de sessão de forma que o servidor possa identificar todas as requisições (em conexões diferentes) de um mesmo cliente.

No modelo mais simples de implementação web utilizamos a técnica de recarregar a página para cada requisição durante muito tempo essa foi a forma mais difundida de trabalhar até porque em um passado não muito distante qualquer alternativa era muito mais complicada e o esforço não compesava dado o custo extra. Atualmente temos tecnologias para contornar isso, o Ajax permite fazer chamadas ao servidor (no mesmo modelo web tradicional) de forma transparente ao usuário, ou seja, o modelo de aplicação permanece o mesmo, porém o usuário não observa o efeito de recarregar a tela. Podemos observar isso nas ferramentas da Google. Em seu mecanismo de busca e carro chefe, a primeira página apresenta apenas um campo texto e por isso quando digitamos o que buscamos ela precisa ser recarregada para apresentar a lista de itens que estamos buscando. Por outro lado, no Gmail, a interação do usuário é toda baseada em um modelo de reconstruir a tela localmente, por exemplo quando estamos enviando um email para alguém, conforme vamos digitando o nome da pessoa aparece uma área de seleção com os contatos armazenados no servidor sem que para isso precise recarregar a tela, no entanto os dados tiveram que ser buscados no servidor.

Dessa forma se conhecermos o que acontece “dentro” da web fica mais fácil de entender e conviver com os detalhes de cada tecnologia de implementação. No final elas trocam texto com seus servidores chamando seus componentes de execução. Se essa visão estiver clara, o programador vai perceber que passa a desenvolver em nível mais abstrato onde apenas descreve como a tela deve ser carregada.

One comments

  1. [...] Outros tipos de situações podem ocorrer, mas esse conjunto base funciona bem para ilustrar que os problemas são diferentes, mas se existem tantas situações de problemas, porque alguém iria querer fazer um sistema distribuído? A resposta na verdade é simples, melhor aproveitamento de recursos e reuso. Em um sistema distribuído um módulo da aplicação pode atender a diversas solicitações, por exemplo de uma maneira centralizada, com isso evitamos cópias de um mesmo módulo para diversas máquinas que estão executando o mesmo tipo de tarefa. Isso tem um impacto imediato na gerência física das máquinas, torna-se mais fácil de atualizar as aplicações já que não precisamos instalar em cada máquina aquele módulo da aplicação. Um exemplo claro disso são os sistemas baseados em tecnologia web, no modelo de aplicação web o processamento acontece no servidor e os usuários acessam o sistema através de um browser, ou seja, o sistema não está instalado na máquina de cada usuário. [...]

Leave a Reply