Esse artigo faz parte da revista .NET Magazine edição 50. Clique aqui para ler todos os artigos desta edição

pt"> 

 

Neste artigo vamos conhecer o IHttpModule, um importante recurso do ASP.NET. Através dele, vamos prover algumas funcionalidades interessantes para o nosso Web Site, muito comuns e encontradas na maioria dos aplicativos Web. São elas:

·         Funcionalidade de aviso de manutenção do sistema web;

·         Criação de um log de estatística;

·         Criação de uma chave de ativação no estilo “serial-number” do Windows;

·         Bloqueio de sistema por IP;

·         Como fazer redirecionamento de páginas no estilo web 2.0.

 

O que é IHttpModule?

O IHttpModule é o módulo HTTP chamado sempre que houver uma requisição em seu sistema Web. O IHttpModule é geralmente utilizado para implementar uma camada de segurança, log de acesso ou cabeçalhos/rodapés personalizados, entre outros.

 

Sistema de aviso de manutenção

  É muito comum quando é necessário realizar alguma manutenção em sistemas Web, retirá-lo do ar temporariamente. Quanto maior o sistema, ou o site, mais delicado fica a manutenção e maior a necessidade de ter-se um agendamento para que seus usuários possam se organizar e não serem pegos de surpresa.

  O asp.net possui um recurso muito interessante. Para tirar a aplicação do ar por algum tempo, basta criar um arquivo .html na raiz do sistema chamado “app_offline.htm”. Automaticamente toda a aplicação sai do ar. Embora prático este recurso pode nos dar alguns problemas:

·         E se eu quiser avisar o usuário algum tempo antes?

·         Como fazer um agendamento programado, automático?

·         Como fazer com que somente eu e minha equipe tenhamos acesso ao sistema em produção, para poder fazer um teste se está tudo 100% antes de lançar para os demais usuários?

Na aplicação a seguir, procurei utilizar conceitos rotineiros do asp.net, que podem nos ajudar muito no dia-a-dia.

Mãos à obra

Primeiro vamos simular o “app_offline.htm”, criando o nosso próprio arquivo (AplicacaoOffline.htm) que funcionará de forma similar, porém com recurso de agendamento, e bloqueio por IP, para que nenhum outro usuário, além dos administradores, possa acessar a aplicação em período de manutenção.

Abra o Visual Studio e crie uma aplicação WEB. No arquivo de configuração, web.config adicione  quatro valores no bloco appsettings (Listagem 1), a Tabela 1 explica com maiores detalhes a necessidade de cada propriedade.

 

Listagem 1. Informações no web.config para simularmos o app_offline.htm


   
   
   
   
 

Chave (Key)

O que significa?

MeuIP

Será informado o seu IP. Para que quando a aplicação web fique em manutenção, somente o seu IP possa ter acesso para teste. Os demais IP verão uma mensagem de “em manutenção”.

DataManutencaoInicial

Data inicial da manutenção agendada. A partir desta data / hora será disponibilizada automaticamente uma mensagem aviso e bloqueado o acesso ao sistema. Formato: dd/MM/aaaa HH:mm. (menos para o IP cadastrado)

DataManutencaoFinal

Data final da manutenção agendada. A partir desta data / hora será disponibilizado o acesso normal ao sistema. Formato: dd/MM/aaaa HH:mm (menos para o IP cadastrado)

ObedecerHorario

Esta variável é para poder simular o arquivo “app_offline.htm” de forma mais fiel. Se o valor for “sim”, é levado em consideração o horário. Se for “não” é ignorado o horário, e levado em consideração apenas a existência do nosso arquivo “AplicacaoOffline.htm”. Caso o arquivo exista, e o valor seja “nao”, o sistema entra automaticamente em manutenção, assim com o arquivo padrão “app_offline.html”

Tabela 1. Propriedades que devem ser adicionadas no arquivo web.config

 

A seguir, crie um arquivo na raiz, chamado AplicacaoOffline.htm; ele será a mensagem que o usuário verá enquanto o sistema estiver em manutenção. Você pode criar com o layout de sua preferência. Caso queira exibir ao usuário o período da manutenção, você deve colocar no meio do seu texto de código html as informações “@MeuHorarioInicial” e “@MeuHorarioFinal”. Este texto depois será substituído respectivamente pelo que foi configurado na chave “DataManutencaoInicial” e “DataManutencaoFinal” do web.config. Veremos mais adiante como fazer esta substituição, a Listagem 2 mostra um exemplo de um arquivo AplicacaoOffline.htm.

 

Listagem 2. Exemplo de arquivo AplicacaoOffline.htm.

  /www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
/www.w3.org/1999/xhtml" >

      


Estamos em manutenção!

Estamos em manutenção, programada das @MeuHorarioInicial as @MeuHorarioFinal.

Agradecemos a sua visita!



  
  

Vamos agora criar a classe que conterá as principais funcionalidades da manutenção. Caso o seu projeto web não tenha ainda a pasta App_Code (Figura 1) crie esta pasta agora, e adicione uma classe (manutencao) na pasta.

 

Figura 1. Adicionando a pasta App_Code no seu projeto

 

Utilizando o arquivo manutencao.vb vamos criar inicialmente uma enumeração (Listagem 3) dos possíveis estados de manutenção, a Tabela 2 demonstra as propriedades da nossa classe que estão implementadas na Listagem 4. Depois de criada as propriedades, devemos criar o método Limpar que atribuirá os valores iniciais, ao ser instanciado um novo objeto “manutenção” (Listagem 5). Depois criaremos um método (Listagem 6) que verificará a existência do arquivo AplicacaoOffline.htm, retornando True caso exista, e false, caso não exista. Esta função é pública, pois poderá ser acessada de todas as páginas aspx.

 

Listagem 3. Enumeração dos possíveis estados da manutenção

   Public Enum estadoManutencao

        [Desativada] = 0

        [EmAguardo] = 1

        [Ativa] = 2

    End Enum

 

Propriedade

Descrição

ArquivoManutencao

Propriedade que determina o caminho físico do arquivo.

DataManutencaoInicial

Propriedade que retorna a data de manutenção incial. Obs.: É string pois pode ser vazio (desativado).

DataManutencaoFinal

Propriedade que retorna a data final de manutenção. Obs. É string pois pode ser vazio (desativado).

obedecerHorario

Propriedade que retorna se o sistema deve obedecer o horário, ou não.

Se não tiver como obedecer, ele simplesmente ignora o horário, e valida a manutenção pelo arquivo.

...
Quer ler esse conteúdo completo? Tenha acesso completo