У меня есть объект, который имеет относительно высокую стоимость инициализации, которая обеспечивает, ориентированный на многопотоковое исполнение метод расчета должен был обработать запросы к веб-сервису.
Я ищу лучший способ сохранить инициализированный экземпляр доступным между запросами.
Один метод должен объявить это как статическую переменную. Это затем осталось бы доступным, пока AppDomain не переработан.
Это - более старый веб-сервис, который не использует WCF, но преобразование является опцией, если это предоставило бы лучшее решение.
Существует ли лучший подход?
Как насчет кэширования объекта в HttpRuntime.Cache
?
MyObject val = (MyObject)HttpRuntime.Cache["MyCacheKey"];
if (val == null)
{
val = // create your expensive object here
HttpRuntime.Cache.Insert("MyCacheKey", val, null,
DateTime.Now.AddSeconds(3600),
System.Web.Caching.Cache.NoSlidingExpiration);
}
Здесь я оставляю его в кэше до часа, но вы можете варьировать это время по мере необходимости.