У меня есть служба WCF, размещенная в IIS, и я хочу вернуть данные, находящиеся в кеше IIS (HttpContext.Current.Cache). Какой наиболее подходящий тип должен возвращать эта служба?
Как вернуть HttpContext.Current.Cache из WCF?
Ответы (3)
На вашем месте я бы не стал полагаться на то, что служба размещена в IIS. Что, если вы хотите разместить свой сервис WCF с помощью какой-либо другой технологии? Я думаю, вам следует проверить memcached, который является гораздо более общим решением для кэширования и отлично работает с файлами . СЕТЬ.
В любом случае, если вы действительно хотите использовать кеш IIS, используйте System.Web.HttpRuntime.Cache вместо HttpContext.Current.Cache, поскольку HttpContext не всегда доступен.
Кроме того, как сказал круизер, фактический тип ваших объектов совершенно не имеет значения, если они сериализуемы (то есть классы украшены [Serializable()] атрибут). Кэш IIS сам по себе не требует сериализуемых объектов, в отличие от WCF.
Вы сериализуете свои объекты для их транспортировки, но нет необходимости кэшировать сериализуемые объекты.
Ваша служба вызывает вашу бизнес-логику для обработки запросов, но то, что передается по сети, должно быть не вашими бизнес-объектами, а контрактами данных вашей службы.
Оберните API кэша и отделите его от кэша HttpRuntime. Как сказал DrJokepu, доступ к кешу asp.net осуществляется через HttpRuntime.Cache, если вы так выберете.
независимо от типа, который вы сохранили в кеше, конечно... он должен быть сериализуемым, хотя