У меня есть два приложения - одно - веб-сайт asp.net, а другое - служба Windows.
оба приложения ссылаются на мой бизнес-уровень (проект библиотеки), который сам ссылается на мой уровень доступа к данным (проект библиотеки), который сам использует блок приложения данных корпоративной библиотеки для получения данных из базы данных sql server 2005.
В настоящее время я использую объект System.Web.Caching.Cache в моем BL для кэширования некоторых моих объектов:
public static System.Web.Caching.Cache Cache
{
get
{
if(cache == null)
{
if (System.Web.HttpContext.Current != null)
{
//asp.net
cache = System.Web.HttpContext.Current.Cache;
}
else
{
//windows service
cache = System.Web.HttpRuntime.Cache;
}
}
return cache;
}
}
так как оба приложения работают самостоятельно - они оба используют отдельный объект Cache самостоятельно - и на самом деле это проблема:
если я изменю объект на веб-сайте asp.net и сохраню его в БД. объект к этому ключу кеша удаляется из кеша - кеша приложения asp.net! это нормально.
но кэш службы Windows становится устаревшим!
наоборот
Возможно ли, что оба приложения используют один и тот же кэш? Один кеш для обоих приложений?
Единственная опция, о которой я думаю, это то, что мне придется использовать SqlDependency с
Sql Server 2005 Invalidation Cache Invalidation
есть ли другой способ?
EDIT:
я только что нашел http://www.codeplex.com/SharedCache. я попробую.
так как скорость будет в статусе кандидата на выпуск до середины 2009 года.