Один кеш для разных приложений? - PullRequest
1 голос
/ 26 января 2009

У меня есть два приложения - одно - веб-сайт 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 года.

Ответы [ 3 ]

7 голосов
/ 27 января 2009

Вы должны внимательно взглянуть на новый бесплатный распределенный кэш Microsoft "Velocity".

Вот подкаст, который я сделал на эту тему: http://www.hanselman.com/blog/HanselminutesPodcast116DistributedCachingWithMicrosoftsVelocity.aspx

Вот подробности о MSDN: http://msdn.microsoft.com/en-us/data/cc655792.aspx

Вот загрузки и образцы: http://code.msdn.microsoft.com/velocity

2 голосов
/ 26 января 2009

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

http://www.google.com/search?q=distributed+caching

С уважением,

Jochen

0 голосов
/ 16 апреля 2009

Кэш хорош только для домена приложения. Видимо, вы не можете использовать один и тот же кеш между веб-приложением и веб-сервисом. Итак ... вы должны сделать 2 кэша синхронно различными способами. Добавление объекта зависимости кеша в ваши кеши после изменения данных приведет к тому, что оба элемента кеша станут недействительными и перезагрузится в кеши. Вы можете использовать опрос или QN (намного лучшую производительность) в качестве механизма зависимости кеша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...