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ê:

  1. recuperá-los a partir do db cada vez que alguém faz um pedido
  2. armazená-los em uma variável de sessão no login
  3. ???????

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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top