Лучшая практика для загрузки и использования элементов словаря? - PullRequest
4 голосов
/ 27 октября 2009

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

  1. Делай, что я делаю, но сохраняю это как переменную приложения?

  2. Жесткий код категории в коде, и покончить с базой данных?

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

  4. Или что-то еще?

Мне просто любопытно узнать, как лучше всего делать такие вещи.

Ответы [ 2 ]

2 голосов
/ 27 октября 2009

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

0 голосов
/ 27 октября 2009

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

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

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

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