У меня есть приложение silverlight 2 beta 2, которое обращается к веб-службе WCF. Из-за этого в настоящее время он может использовать только привязку basicHttp. Веб-сервис вернет довольно большие объемы данных XML. Это кажется довольно расточительным с точки зрения использования полосы пропускания, так как ответ, если он сжат, будет меньше в 5 раз (я фактически вставил ответ в текстовый файл и сжал его).
Запрос имеет «Accept-Encoding: gzip, deflate». Есть ли способ, которым служба WCF gzip (или иным образом сжимает) ответ?
Я нашел эту ссылку , но она кажется немного сложной для функциональности, которая должна быть обработана из коробки IMHO.
ОК - сначала я обозначил решение, используя System.IO.Compression в качестве ответа, поскольку я никогда не мог «заставить» работать динамическое сжатие IIS7. Ну как получается:
Динамическое сжатие на IIS7 работало одновременно. Просто плагин Nikhil Web Developer Helper для IE не показал, что он работает. Я предполагаю, что, поскольку SL передает вызов веб-службы браузеру, браузер обрабатывает его «под прикрытием», и инструмент Никхила никогда не видит сжатый ответ. Я смог подтвердить это с помощью Fiddler, который отслеживает трафик, внешний по отношению к приложению браузера. В fiddler ответ был сжат gzip !!
Другая проблема с решением System.IO.Compression заключается в том, что System.IO.Compression не существует в CLR Silverlight.
Итак, с моей точки зрения, самый простой способ включить сжатие WCF в Silverlight - это включить динамическое сжатие в IIS7 и вообще не писать код.