Кэш ASP.net + шаблон Singleton

У меня есть огромный XML-документ, который мне нужно проанализировать для создания объектов домена.

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

public List<Product> GetXMLProducts()
{
    if (HttpRuntime.Cache.Get("ProductsXML") != null)
    {
        return (List<Product>)(HttpRuntime.Cache.Get("ProductsXML"));
    }

    string xmlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content\\Products.xml");
    XmlReader reader = XmlReader.Create(xmlPath);
    XDocument doc = XDocument.Load(reader);

    List<Product> productsList = new List<Product>();
    // Parsing the products element

    HttpRuntime.Cache.Insert("ProductsXML", productsList);
    return productsList;
}

Как лучше всего заставить эту функцию работать в синглтоне и быть потокобезопасной -?

Исправлен метод сохранения объекта в кеш (было копирование -ошибка вставки)

5
задан Catalin 16 July 2012 в 10:59
поделиться