我读过这篇WCF Compression文章,我知道对于.net 4.0WCF压缩是开箱即用的。
我找不到任何关于如何使用它的明确解释,我需要定义任何设置或更改绑定吗?或者是自动压缩的?
我在IIS7中使用basicHttpBinding。选项“启用动态压缩”设置为true,但是我不明白客户端是如何知道压缩请求和解压缩响应的?
将理解包括设置绑定以减小消息大小的任何解释。当在4MB带宽的远程服务器上工作时,我遇到了非常糟糕的性能。
发布于 2012-05-20 14:56:14
但是我不明白客户端是怎么知道压缩请求和解压缩响应的?
这都是HTTP规范的一部分。由于WCF使用HTTP和IIS,因此它可以利用web服务器和客户端HTTP堆栈的内置压缩。
查看第14.3节:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
基本上,您的客户端需要发送一个标头,说明它支持压缩。示例:Accept-Encoding: gzip, deflate。您可以按照WCF客户端部分文章中的说明进行设置。然后,您的客户端将向服务器发送正确的标头。
现在,在服务器端,IIS将看到该标头,并将压缩为此配置的response...if。您链接的文章告诉您如何为WCF服务设置IIS压缩。然后,服务器将向客户端发送回一个头,告诉它内容已压缩:Content-Encoding: gzip。然后,客户端将解压缩响应并继续它的快乐之路。
差不多就是这样;只需要获得正确的客户机头,并将服务器配置为发送回压缩的响应。本文将告诉您如何做到这一点。希望这能有所帮助
发布于 2014-04-17 07:39:24
请注意,压缩已添加到WCF 4.5中。在这里有介绍:http://msdn.microsoft.com/en-us/library/aa751889(v=vs.110).aspx
您必须使用自定义绑定来启用它:
<customBinding>
<binding name="BinaryCompressionBinding">
<binaryMessageEncoding compressionFormat="GZip"/>
<httpTransport />
</binding>
</customBinding>它只适用于二进制编码。此外,您还必须了解您的场景。如果您是在IIS中托管的,则压缩可能已经打开。查看此处:http://blogs.msdn.com/b/dmetzgar/archive/2011/04/29/automatic-decompression-in-wcf.aspx
发布于 2012-05-20 16:33:04
压缩样本在.NET 4wcf样本中提供,
http://www.microsoft.com/en-us/download/details.aspx?id=21459
这篇博文用更多信息解释了这一点。
http://blogs.msdn.com/b/dmetzgar/archive/2011/03/10/compressing-messages-in-wcf-part-one-fixing-the-gzipmessageencoder-bug.aspx
MSDN博客上还有其他帖子,比如
http://blogs.msdn.com/b/dmetzgar/archive/2011/04/29/automatic-decompression-in-wcf.aspx
https://stackoverflow.com/questions/10600278
复制相似问题