Muitos desenvolvedores nunca consideram o conceito de estado antes de entregar aplicativos para a Web. Como mencionado anteriormente, a Web é um ambiente sem estado. Portanto, devemos discutir o que é o estado e entender os métodos que podem evitar problemas.
Definição precisa de status
Em um programa de usuário único, ao criar um aplicativo executável, como o uso do VB para criar um arquivo .exe, você pode declarar uma variável global (ou pública) e depois acessá-lo em qualquer lugar do código. O valor do momento é sempre válido e acessível o tempo todo, o aplicativo está em execução.
Para uma solução tradicional de cliente/servidor, como um sistema no qual um aplicativo baseado em cliente acessa um mecanismo de banco de dados baseado em servidor, cada cliente estabelece uma conexão com o servidor e o aplicativo de banco de dados. Essa conexão geralmente é estabelecida verificando o usuário.
O processo de verificação é um processo típico de identificação de um usuário, que prova se é um usuário legítimo por meio de uma combinação de nome de usuário e senha.
Uma vez autenticado, uma conexão é estabelecida entre o cliente e o aplicativo baseado em servidor, que permanece válido durante todo o tempo em que o usuário usou o aplicativo. Isso acontece quando o usuário se registra no servidor Windows 2000 fermentado. Sempre que um administrador usa o utilitário Usuários e Computadores do Active Directory (clique no item de gerenciamento do diretório na opção Ferramentas Administrativas no menu Iniciar) para observar conexões ativas do usuário. Esse processo é o mesmo em muitos sistemas, como o Microsoft SQL Server.
Essa conexão permanente significa que, quando um usuário envia instruções ou solicitações ao servidor, o servidor identifica facilmente cada usuário. A mesma resposta do servidor ou qualquer outra informação do usuário também pode ser retornada diretamente ao usuário. Observa -se ainda que o servidor pode armazenar valores e informações relacionadas a cada cliente com mais facilidade e fornecê -los ao cliente correspondente quando necessário. Obviamente, os aplicativos do servidor podem ter as principais variáveis globais para os usuários acessarem quando necessário.
Essa capacidade de identificar solicitações de cada cliente e salvar os valores do usuário relevante na memória constitui o estado. O estado pode ser considerado para representar o valor, o ambiente e as variáveis internas do aplicativo do usuário e executa todo o processo do aplicativo e da conexão do usuário.
A importância do status
Se você pretende criar um aplicativo baseado em site que interaja com o usuário, em vez de um site que exibe apenas páginas independentes, você deve fornecer um status separado para cada usuário. Isso pode apenas se lembrar do nome deles, ou também pode ser armazenar referências de objetos ou registros diferentes para cada usuário. Se você não puder fazer isso, a página da Web do ASP não pode fazer mais, porque quando a página é executada, as variáveis e outras informações relacionadas na página são destruídas. Quando o usuário solicitar a próxima página, todas as informações fornecidas nesta página serão perdidas.
Portanto, é necessário encontrar uma maneira de salvar o status de cada visitante. É muito importante poder armazenar valores globais para todos os usuários. Por exemplo, um acesso de acessar no estilo da Web ou um contador de clique de página que não fornece a cada usuário seu próprio contador, e os usuários geralmente desejam ver o número total de visitantes, não apenas o número de visitas que eles mesmos visitam. O número de visitantes precisa ser armazenado com o estado no nível do aplicativo, não com o estado no nível do usuário.
Isso não é um problema que acabou de surgir. Portanto, existem muitas soluções tradicionais para armazenar estado na web. Os administradores do site querem saber se os visitantes já visitaram o site antes e, em caso afirmativo, quantas vezes eles visitaram? Visite também outros sites regularmente. Isso tornará melhor definir suas metas de publicidade. Tudo isso requer uma maneira de armazenar informações sobre as solicitações da página da web geradas pelo usuário durante o acesso ou entre cada visita.
Crie um status na web
Uma maneira comum de fornecer status entre solicitações de página e acesso ao site é através de cookies. Vimos nos capítulos anteriores como armazenar os valores correspondentes no computador do cliente, que são enviados em conjunto com cada solicitação de página ao domínio válido para este cookie. Ao verificar e atualizar cookies com ASP, é possível manter um estado até certo ponto. As informações incluídas podem ser usadas para identificar o usuário e, em seguida, conectar o usuário a um conjunto de valores correspondentes armazenados.
Por exemplo, pode-se detectar se uma solicitação de usuário contém um cookie especificado pelo site. Se não estiver incluído, o usuário recebe um certo tipo de identidade, especificando um número e armazenado em um cookie com um longo período de validade. Toda vez que o usuário visita este site no futuro, ele poderá detectar cookies e atualizar as informações contidas nele. Os dados sobre o número e a duração das visitas também podem ser coletados e armazenados no servidor para uso futuro.
Mas o que acontece se um usuário transferir para outro computador ou excluir um cookie, ou seu navegador se recusa a receber o cookie enviado a eles? Nesse caso, o estado não pode ser mantido porque não será reconhecido na próxima vez. Se você abrir o aviso antes de aceitar a opção de cookies no seu navegador e percorrer alguns sites grandes, entenderá o significado.
1. Visitantes anônimos e visitantes autorizados
Se você acha que os cookies são uma solução um pouco desleixada, você pode usar uma abordagem mais direta. Uma abordagem que muitos sites usam é exibir uma caixa de diálogo de login quando um visitante clica em um site ou quando uma página que requer verificação da identidade. Os visitantes devem primeiro registrar e obter um certo tipo de combinação de nome de usuário/senha para permitir o acesso ao site ou página correspondente.
Para provar que o visitante é um usuário conhecido e legítimo, um cookie colocado no computador do visitante economiza dados detalhados de registro ou uma chave indicando que a identidade foi verificada. Ao mesmo tempo, os dados detalhados do visitante são salvos permanentemente no servidor e prontos para serem usados ao acessar novamente. Se o visitante tiver um cookie em seu navegador, ele poderá acessar livremente o site porque foi verificado.
Se o cookie não tiver período de validade (expirar), o valor do cookie desaparecerá automaticamente quando o navegador estiver fechado e deverá ser re-registrado e verificado novamente na próxima visita. Obviamente, se você se recusar a receber cookies ou excluir cookies, só poderá obter a caixa de diálogo de registro novamente. Dessa forma, se não for reconhecido, o site não poderá ser acessado.
Ao forçar os usuários a se registrar com um servidor da Web, como se registrar em sua própria rede, o desempenho geral de segurança do Windows 2000 fornece aos IIS recursos de verificação mais fortes e seguros. No entanto, isso só pode funcionar com os navegadores com o Internet Explorer 3.0 e acima. O IIS também pode usar a verificação básica para permitir que os navegadores não-Microsoft registrem um servidor da Web.
2. Não há mais visitantes anônimos
Ao usar o ASP em um servidor da Web do IIS, os usuários podem ser rastreados na sessão atual, a menos que o usuário saia do site para outro site ou feche o navegador. Mais adiante neste capítulo, você verá como esse recurso é usado para identificar um visitante, armazenar informações locais do usuário e fornecer status. A seguir, é apresentada uma discussão sobre como funciona em comparação com as soluções já discutidas.
O ASP e o IIS propuseram conjuntamente um conceito de sessões de usuário, interagindo através de objetos de sessão ASP. Quando cada visitante acessa primeiro uma página da Web ASP no servidor, crie um objeto de sessão novo e independente para ele, atribua um número de identificação de sessão à sessão e adicione uma versão criptografada especial do identificador de sessão.
O caminho do cookie (consulte o capítulo anterior para descrição dos atributos de cookie) é definido como o caminho raiz do aplicativo ASP em execução no servidor. É provável que isso esteja no diretório raiz do site da web padrão (ou seja, /), mas também pode ser outro valor (veja posteriormente). O valor expire não é fornecido no cookie; portanto, quando o navegador está fechado, o valor do cookie desaparece.
Sempre que esse usuário visitar esta página da Web ASP, o ASP procurará este cookie. Nomeado aspsessionIdIdxxxxxxxxx, onde cada x é um caráter alfabético. Na coleção ServerVariables mostrada na Figura 2-7 no Capítulo 2, você pode vê-la no cabeçalho HTTP.
No entanto, este cookie não aparece na coleção Request.Cookies ou Response.Cookies, que o ASP oculta, mas ainda é salvo no navegador. Para cada solicitação da página da Web do ASP, o ASP deve visualizar o valor. O valor contido neste cookie indica a sessão do usuário. Portanto, o conteúdo do objeto de sessão correspondente (que foi processado na memória e sempre contém todos os valores que operados durante o processo de solicitação de página anterior) pode ser entregue ao script na página da Web ASP.
Obviamente, como mencionado anteriormente, se o navegador do cliente não receber ou suportar esses cookies, esse processamento falhará. Nesse caso, uma sessão ASP não pode ser criada e o status deste visitante não é mantido automaticamente.