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