Доступ к объекту кэша из веб-приложения в веб-сервисе? - PullRequest
0 голосов
/ 05 августа 2011

Я предвосхищу это, сказав, что много лет я занимался разработкой в ​​.NET и VB / BASIC много лет до этого, но мой опыт в основном связан с настольными приложениями и системными интерфейсами - я все еще довольно хорош новичок во всем этом веб-приложении, поэтому я прошу прощения, если это глупый вопрос.

Тем не менее, вот мой вопрос: Когда вы создаете объект на странице ASPX и сохраняете его в кэше, как вы можете получить к нему доступ из веб-службы ASMX, которая находится в том же приложении?

Для дальнейшего уточнения: у меня есть одно веб-приложение, которое включает страницы ASPX, веб-сервис ASMX и библиотеку классов, состоящую из двух классов объектов. Когда пользователь входит в приложение, он настраивает некоторые параметры, и объекты создаются и сохраняются в объекте system.Web.Caching.Cache. Затем пользовательские объекты извлекаются из кэша на следующей странице, а затем пользователь выполняет AJAX-вызов (через jQuery) для веб-службы для получения некоторых данных.

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

У меня есть подозрение, что может быть возможно сериализовать мои пользовательские объекты .NET в объекты JSON и передать их через AJAX-вызов в веб-сервис для десериализации, но, честно говоря, я не знаю, как начать тот. Плюс объекты потенциально имеют размер 30-40 КБ, и вызов AJAX выполняется так же часто, как раз в 3 секунды, поэтому я действительно хотел бы избежать лишних затрат на передачу всех этих дополнительных данных при каждом вызове, особенно с учетом того, что данные Мне нужно уже сидеть в памяти в приложении, где находится веб-сервис.

Итак, еще раз, я спрашиваю: когда вы создаете объект на странице ASPX и сохраняете его в кэше, как вы можете получить к нему доступ из веб-службы ASMX, которая находится в том же приложении?

Имеет ли это смысл? Я сумасшедший? Отсутствует что-то очевидное? Любое понимание, которое кто-либо может предоставить, будет ОЧЕНЬ высоко оценено. Спасибо!

Ответы [ 2 ]

6 голосов
/ 05 августа 2011

Вы можете получить доступ к текущему состоянию конвейера HTTP, используя HttpContext.Current. Поэтому для доступа к кешу вам нужно использовать HttpContext.Current.Cache .

Кстати, веб-сервисы asmx считаются устаревшей технологией (см. это ) - поэтому я предлагаю вам перейти на сервисы WCF. Если вы используете службы WCF, то для доступа к HttpContext.

необходимо включить режим совместимости ASP.NET (см. this ).
0 голосов
/ 05 августа 2011

Я не пробовал то, что вы ищете, но объекты хранятся в кеше в виде пар ключ-значение, где ключом может быть что угодно, от простого целого числа до направляющих, а значением является ваш объект.Насколько я понимаю, службе asmx просто нужен ключ, чтобы он мог заглянуть в кеш и вернуть объект.Но, опять же, это мое понимание, я не пробовал этот сценарий.

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