Лучшая практика для загрузки и использования элементов словаря?

StackOverflow https://stackoverflow.com/questions/1627889

Вопрос

Скажем, у меня есть 10 "категорий" что мне нужно ссылаться в веб-приложении. В настоящее время я храню эти категории в БД и извлекаю их (имя категории и идентификатор) во время загрузки страницы на моей базовой странице, сохраняя их в хеш-таблице, а затем использую хеш-таблицу для ссылки на категории. Я понял, что вызов БД выполняется во время каждой загрузки страницы. Мне нужно вытащить эти категории только один раз, поскольку они никогда не меняются во время данного сеанса. Какой лучший способ сделать это?

<Ол>
  • Делайте все, что я делаю, но сохраняйте это как переменную приложения?

  • Жесткое кодирование категорий в коде и удаление базы данных?

  • Сохранить категории в переменной сеанса? И вызывать БД только если сессия пуста?

  • Или что-то еще?

  • Мне просто интересно узнать, каков наилучший опыт для таких вещей.

    Это было полезно?

    Решение

    Если категории зависят от пользователя, я бы сохранил их в переменной Session; в противном случае я бы использовал функциональность кэширования ASP.NET (или предпочтительное распределенное кэширование). Это позволяет избежать попадания в базу данных, а также контролировать длительность кэширования категорий.

    Другие советы

    Вызов базы данных не всегда так дорог, как кажется, типичный веб-сайт выполняет десятки обращений к БД при каждой загрузке страницы. Но если это становится проблематичным с точки зрения производительности, подумайте об использовании решения ORM. На ум приходит превосходный открытый исходный код NHibernate , который является "де-факто". стандарт для отображения баз данных на классы и объекты. Помимо сопоставления, он автоматически обеспечивает два уровня кэширования и пул соединений. Без особых проблем ваш сайт превосходит любой другой по оползню.

    Недостаток использования ORM? Для многих это считается довольно крутой кривой обучения. Если вы хотите прочитать об этом, обязательно посетите NHibernate Best Practices . Сначала трудно читать, но определенно стоит.

    Если вы комбинируете NHibernate с FluentNHibernate , его использование будет очень простым.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top