Лучший способ получить доступ к настройкам пользователя / сайта - PullRequest
1 голос
/ 28 октября 2008

Было несколько вопросов, которые как-то касались этого, но не охватывали мой точный вопрос, так что мы здесь.

Для настроек сайта, если они хранятся в базе данных:

  1. извлекает их из БД каждый раз, когда кто-то делает запрос
  2. сохранить их в переменной сеанса при входе в систему
  3. 1010 * ??????? *

Для пользовательских настроек я делаю то же самое, что и настройки сайта ??

Будем весьма благодарны за любые рекомендации / лучшие практики.

Приветствия

Ответы [ 3 ]

1 голос
/ 28 октября 2008

Я предлагаю создать модуль для извлечения предпочтений, который может быть реализован в любом случае, а затем для вашей первой реализации попадать в базу данных каждый раз, поскольку это проще. Если у вас есть проблемы с производительностью, добавьте кеширование в модуль, чтобы уменьшить трафик базы данных.

1 голос
/ 28 октября 2008

Я предпочитаю подход, подобный тому, который предлагает Glomek ... Кэширование настроек в WebCache значительно повысит скорость доступа. Учтите следующее:

    #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; } }

Вы получите качество динамической загрузки, сохранение памяти при выбрасывании элементов из кэша через 2 часа неиспользования, а также сброс и перезагрузка, необходимые при изменении настроек.

0 голосов
/ 28 октября 2008

Как правило, я бы поместил настройки сайта в файл web.config, если только вы не создаете приложение, которое имеет несколько сайтов и часто меняется самим приложением, обычно сначала не имеет смысла помещать его в базу данных. .

Для пользовательских настроек я бы хотел начать со стандартного поставщика профилей asp.net, который будет сохранять настройки в базе данных и управлять получением пользовательских настроек один раз для каждого запроса и сохранять обновления до конца, чтобы минимизировать количество. вызовов БД. Как только вы начнете сталкиваться с проблемами производительности, вы можете рассмотреть вопрос о расширении поставщика профилей для кэширования и / или ваших конкретных потребностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...