Сохраните объект Dictionary в ApplicationState и поместите его в Web.config. - PullRequest
0 голосов
/ 11 августа 2011

Мне нужно хранить словарь в моем приложении asp .net.Этот словарь по сути представляет собой прямое отображение ключей (строк) в значения (строки).В течение срока действия Приложения словарь не изменится и будет содержать около 10 элементов.

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

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

  1. Создание и инициализация словаря во время Application_Start и его сохранение в объекте ApplicationState.

Или ...

Сделайте то, что они предлагают здесь: Как сохранить объект словаря в моем файле web.config?

Мне нравится вариант 2, так как в будущем добавляется новое значениеэто просто вопрос добавления записи в Web.Config без каких-либо изменений кода, но я беспокоюсь о производительности, так как мне придется получать значение для каждой строки, возвращаемой из хранимой процедуры.

Интересно, как-то оптимизированы / кэшированы ли эти поиски в web.config?

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Если вы используете ConfigurationManager для доступа к AppSettings значениям, они кэшируются после первого обращения к ним.Поэтому, когда вы впервые получаете доступ к ConfigurationManager.AppSettings["MyValue"], он читается с диска, после чего читается из кеша.

0 голосов
/ 11 августа 2011

Почему бы не смешать это немного. В Application_Start загрузите ваши значения web.config в словарь. Тогда вы все еще можете настроить список без изменений кода, и ваш код может легко ссылаться на словарь

РЕДАКТИРОВАТЬ: Конечно, недостатком здесь является то, что список будет обновляться только при перезапуске вашего веб-сайта (т. Е. При повторном запуске Application_Start), где прямой файл конфигурации позволит получить более быстрые результаты при изменении файла web.config. , Возможно, это причина для выбора опции web.config

...