Оптимизация чтении веб.конфиг


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

/// <summary>
/// Static class that handles the web.config reading.
/// </summary>
public class SiteGlobal
{
    /// <summary>
    /// Property that pulls the connectionstring value.
    /// </summary>             
    public static string ConnectionString { get; protected set;}

    /// <summary>
    /// Property that pulls the directory configuration value.
    /// </summary>
    public static string Directory { get; protected set; }

    /// <summary>
    /// Static contructor for the SiteGlobal class.
    /// </summary>
    static SiteGlobal() {
        ConnectionString = WebConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
        Directory = WebConfigurationManager.AppSettings["Directory"];

    }
}

Которую я не считаю плохой оптимизации. (Предложения по улучшению приветствуются через.)

Теперь если я пытаюсь читать из практическое руководство. что может содержать, например, несколько районов :

<ApplicationArea>
    <test1>
        <add key="key value" value="value data"/>            
    </test1>
    <test2>
        <add key="key value1" value="value data2"/>
    </test2>
</ApplicationArea>

Где я могу иметь под ApplicationArea нескольких районов, таких как test1 и Test 2 выше. Лучшее, что я смог придумать для оптимизации этого, хотя это :

public static string ApplicationArea(string skey, string skey2)
    {
        NameValueCollection nvc = WebConfigurationManager.GetSection("ApplicationArea/" + skey) as NameValueCollection;
        return nvc[skey2];                        
    }       

Что не сохранение данных и перечитывает веб.файл конфигурации каждый раз, когда он доступен. Есть простой способ, чтобы оптимизировать чтение из секции?



4567
5
задан 4 мая 2011 в 06:05 Источник Поделиться
Комментарии
1 ответ

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

На самом деле, он может даже не возникать для каждого запроса, в MSDN написано: 'Эти параметры рассчитываются один раз и затем кэшируется на последующие запросы. ASP.NET автоматически следит за изменениями файла и повторно вычисляет кэша при любой конфигурации изменение файлов в иерархии файлов. Когда сервер получает запрос на определенный URL-адрес, ASP.NET использует иерархию параметров конфигурации в кэше, чтобы найти запрашиваемый ресурс.' Таким образом, вы просто удвоили потребление памяти; и я не уверен, что это быстрее.

8
ответ дан 5 мая 2011 в 02:05 Источник Поделиться