Как вернуть HttpContext.Current.Cache из WCF? - PullRequest
5 голосов
/ 29 января 2009

У меня есть служба WCF, размещенная в IIS, и я хочу вернуть данные, которые находятся в кэше IIS (HttpContext.Current.Cache) Какой наиболее подходящий выбор типа этот сервис должен вернуть?

Ответы [ 3 ]

14 голосов
/ 29 января 2009

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

В любом случае, если вы действительно хотите использовать кэш IIS, используйте System.Web.HttpRuntime.Cache вместо HttpContext.Current.Cache, поскольку HttpContext не всегда доступен.

Кроме того, как сказал cruizer , фактический тип ваших объектов совершенно не имеет значения, если они сериализуемы (то есть классы украшены с помощью [Serializable () ] атрибут). Сам кэш IIS не требует сериализуемых объектов, но WCF требует.

2 голосов
/ 08 июля 2009

Вы сериализуете свои объекты для их транспортировки, но нет необходимости кэшировать сериализуемые объекты.

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

Оберните ваш API кеша и отделите его от HttpRuntime Cache. Как сказал DrJokepu, зайдите в кэш asp.net через HttpRuntime.Cache, если вы выберете это.

0 голосов
/ 29 января 2009

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

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