我有一个使用Silverlight 2 beta 2的应用程序,它访问一个WCF Web服务。因此,它目前只能使用basicHttp绑定。Web服务将返回相当大量的XML数据。从带宽使用的角度来看,这似乎非常浪费,因为如果压缩响应,则响应大小将减小5倍(实际上我将响应粘贴到txt文件中并压缩它)。
请求确实具有"Accept-Encoding: gzip, deflate" - 是否有任何方法可以使WCF服务gzip(或以其他方式压缩)响应?
我找到了链接,但对于应该由开箱即用处理的功能来说,它似乎有点复杂。
好的-起初我标记使用System.IO.Compression作为答案,因为我似乎永远无法使IIS7动态压缩工作。嗯,事实证明:
请求确实具有"Accept-Encoding: gzip, deflate" - 是否有任何方法可以使WCF服务gzip(或以其他方式压缩)响应?
我找到了链接,但对于应该由开箱即用处理的功能来说,它似乎有点复杂。
好的-起初我标记使用System.IO.Compression作为答案,因为我似乎永远无法使IIS7动态压缩工作。嗯,事实证明:
IIS7上的动态压缩一直都在工作。只是Nikhil的Web Developer Helper插件没有显示它正在工作。我的猜测是,由于SL将Web服务调用交给了浏览器,所以浏览器在“底层”处理它,并且Nikhil的工具从未看到压缩的响应。我通过使用监视浏览器应用程序外部流量的Fiddler来确认了这一点。在fiddler中,响应实际上被gzip压缩了!
System.IO.Compression解决方案的另一个问题是,在Silverlight CLR中不存在System.IO.Compression。
因此,从我的角度来看,启用Silverlight中的WCF压缩的最简单方法是在IIS7中启用动态压缩,并且不编写任何代码。