terça-feira, 9 de fevereiro de 2010

Criando Cache de Dados em Asp.net

 Fala, galera!!

Após um longo período de inatividade, hoje estarei postando um código para gerar cache de dados em webservices, serviços criados utilizando o WCF ou aplicações web.

O objetivo é gerar um cache de consultas para evitar acessos constantes ao banco de dados.

Por exemplo:

Imaginemos uma aplicação que possui um método para consultar o CPF de um usuário de acordo com o login do mesmo.

Sabemos que o CPF é uma informação que nunca muda. Portanto, ao invés de acessarmos o banco de dados cada vez que o método for executado, por que não gerarmos um cache dessa informação?

Veja o código:


Public Function ObterCPFUsuario( ByVal Login As String) As String
            'Se houver Cache, a função retorna o valor armazenado no cache.
            If Not IsNothing(HttpContext.Current.Cache("CPF_" & Login)) Then
                Return HttpContext.Current.Cache("CPF_" & Login)
            End If
            'Se não houver Cache, a função realiza a consulta no banco e armazena o resultado no cache
            Dim conn as new Sqlconnection
            Dim cmd as new SqlCommand
            Dim dr as SqlDataReader
            Dim CPF as string
            conn.ConnectionString = "String de conexao"
            conn.open()
            cmd.Connection = conn
            cmd.CommandText = "Select CPF From Usuario Where Login ='" & Login & "'"
            dr = cmd.ExecuteReader()
            if dr.Read() then
               CPF = dr(0)
            end if
            'Armazenando o resultado em um cache que nunca expira
            HttpContext.Current.Cache.Add("CPF_" & Login, CPF, Nothing, DateTime.MaxValue, System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.Normal, Nothing)

            Return CPF
End Function


No exemplo acima, o cache nunca expira pois sabemos que o CPF nunca irá mudar.
Mas você pode estipular um período de validade para o seu cache.

Um abraço e até a próxima!!

Nenhum comentário:

Postar um comentário