Melhor maneira para acessar as configurações de usuário / local
Pergunta
Houve um par de perguntas que tipo de tratados com isso, mas não cobrindo a minha pergunta exata então aqui vamos nós.
Para as configurações do site, se estes são armazenados em um banco de dados que você:
- recuperá-los a partir do db cada vez que alguém faz um pedido
- armazená-los em uma variável de sessão no login
- ???????
Para configurações específicas do usuário que eu faço o mesmo que as configurações do site ??
Qualquer / melhores práticas de orientação seria muito apreciada.
Felicidades
Solução
Eu prefiro uma abordagem como Glomek propõe ... Armazenando as configurações no WebCache irá aumentar a velocidade de acesso. Considere o seguinte:
#region Data Access
private string GetSettingsFromDb(string settingName)
{
return "";
}
private Dictionary<string,string> GetSettingsFromDb()
{
return new Dictionary<string, string>();
}
#endregion
private const string KEY_SETTING1 = "Setting1";
public string Setting1
{
get
{
if (Cache.Get(KEY_SETTING1) != null)
return Cache.Get(KEY_SETTING1).ToString();
Setting1 = GetSettingsFromDb(KEY_SETTING1);
return Setting1;
}
set
{
Cache.Remove(KEY_SETTING1);
Cache.Insert(KEY_SETTING1, value, null, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(2));
}
}
private Cache Cache { get { return HttpContext.Current.Cache; } }
Você vai ter a bondade carregamento dinâmico, conservação de memória de itens jogar fora de cache após 2 horas de não utilização, e o flush e recarregar você precisa quando as configurações são modificadas.
Outras dicas
Eu sugiro criar um módulo para recuperar as preferências que podem ser implementadas de qualquer forma, e depois para a sua primeira implementação bater o banco de dados de cada vez desde que é mais fácil. Se você tiver problemas de desempenho, adicionar cache para o módulo para reduzir o tráfego de dados.
Geralmente eu iria colocar as configurações do site no arquivo web.config, a menos que você está construindo uma aplicação que tem vários sites e fica alterado pelo próprio aplicativo com freqüência, geralmente não faria sentido para colocá-lo no banco de dados em primeiro lugar .
Para obter as configurações de usuário específicas Gostaria de olhar para começando com o provedor de perfil asp.net padrão que irá armazenar as configurações no banco de dados e gerenciar o retrival das configurações do usuário uma vez por solicitação e salvar as alterações para o fim de minimizar o número de chamadas DB. Uma vez que você começar a problemas de desempenho hit você pode considerar o alargamento do provedor de perfil para cache e / ou às suas necessidades específicas.