O objeto Application tem como objetivo armazenar e compartilhar valores, estados e propriedades de um grupo. No caso, valores comuns a todos os visitantes do site, como número total de visitantes no site, quantas pessoas estão visitando o site no momento, etc.
O objeto session tem como objetivo armazenar e compartilhar valores, estados e propriedades de cada visitante, individualmente. São bons exemplos o uso em lojas virtuais, onde a cesta de compras pode ser armazenada dentro de uma session.
O objeto Application é ativado quando for feita a primeira visita ao site, e termina quando o servidor for desligado (é permitido gravar todos esses valores em banco de dados, assim não há perda dos valores). Todo o script e códigos de armazenamento somente podem ser escritos em um arquivo chamado global.asa, que deve permanecer na pasta raiz do site.
O objeto session é criado para cada visitante, cada vez que um visitante entra no site, e é destruído toda vez que este visitante sai do site. Ao entrar no site, cada visitante recebe um ID (número de identificação), o qual é usado para identificar o usuário e para armazenar os valores, estados e propriedades de cada visitante, individualmente.
O arquivo global.asa tem o seguinte formato:
<script LANGUAGE=VBSCRIPT RUNAT=SERVER>
Sub Application_OnStart
End sub
Sub Application_OnEnd
End sub
Sub Session_OnStart
End sub
Sub Session_OnEnd
End sub
</script>
Nos eventos Application_OnStart e Application_OnEnd estão armazenados os valores comuns a todos os visitantes. Nos eventos Session_OnStart e Session_OnEnd estão armazenados os códigos, scripts e valores usados nas sessions (valores individuais para cada visitante).
Métodos dos Objetos Application e Session:
Application.Lock -> é usado para bloquear o acesso de outras páginas ao evento Application_OnStart ou Application_OnEnd, com excessão da página que requisitou o bloqueio, permitindo assim que somente esta página possa fazer alterações no evento.
Application_Unlock -> Desbloqueia o acesso de outras páginas.
Esses métodos são usados para que duas páginas não tentem alterar as mesmas propriedades ou valores ao mesmo tempo. Pois isso acarretaria numa perda de consistência dos dados armazenados.
Abaixo, um exemplo de como saber o número de visitantes totais do site e o número de visitantes no site no presente momento.
<script LANGUAGE=VBSCRIPT RUNAT=SERVER>
Sub Application_OnStart
Application("Totalvisitas") = 0
Application("datainicial") = now
Application("Visitasatuais") = 0
End sub
Sub Application_OnEnd
End sub
Sub Session_OnStart
Application.Lock
Application("Totalvisitas") = Application("Totalvisitas") + 1
Application("Visitasatuais") = Application("Visitasatuais") + 1
Application.Unlock
End sub
Sub Session_OnEnd
Application.Lock
Application("Visitasatuais") = Application("Visitasatuais") -1
Application.Unlock
End sub
</script>
abaixo, código para exibir esses valores.
<html><header><title>Application & Session
<body>
<%
response.write "Visitas totais desde" & application("datainicial") & ":" & application("Totalvisitas")
response.write "Visitantes no site no momento:" & application("Visitasatuais")
%>