Кэш WCF против Page.Cache - PullRequest
       4

Кэш WCF против Page.Cache

3 голосов
/ 01 декабря 2011

У меня есть два разных, но тесно связанных веб-приложения ASP.Net, которые используют одни и те же данные на некоторых страницах.В обоих приложениях я использую элемент управления ObjectDataSource, имею EnableCaching = "true" и использую одно и то же значение CacheKeyDependency в обоих приложениях.

Я хотел бы сделать так, чтобы при вставке или удалении новой записи водно приложение, оно очищает кеш в обоих приложениях.Я начал с простой очистки кеша с помощью Page.Cache, но вскоре понял, что он не очищает кеш в другом приложении.Затем я добавил службу WCF для каждого приложения;каждый сервис очищает объект кэша в приложении, в котором он размещен. За исключением того, что он не ...

Во-первых, я обнаружил, что System.Web.HttpContext всегда является нулевым в WCF.Затем я попытался создать экземпляр объекта System.Web.Routing.RequestContext, но его объект HttpContext также всегда равен нулю.

Все сводится к следующему: если я установил объект Page.Cache, может ли служба WCFполучить доступ к тому же объекту кэша, если служба размещена в том же приложении, что и страница?

Ответы [ 2 ]

3 голосов
/ 01 декабря 2011

Да, вам нужно включить интеграцию ASP.NET для службы WCF. Это включает установку атрибута aspNetCompatibilityEnabled для элемента serviveHostingEnvironment в конфигурации, а также добавление атрибута AspNetCompatibilityRequirementAttribute к вашему классу обслуживания, чтобы указать, что вы поддерживаете его.

Больше на эту тему можно найти здесь, на MSDN.

0 голосов
/ 01 декабря 2011

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

Один из способов сделать это - разрешить обоим приложениям использовать один и тот же кеш. Одним из решений для распределенного кэша, который работает вне процесса, является Кэширование Appfabric .

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