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!!
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário