首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用.net 4压缩WCF

用.net 4压缩WCF
EN

Stack Overflow用户
提问于 2012-05-15 20:04:38
回答 4查看 4.2K关注 0票数 1

我读过这篇WCF Compression文章,我知道对于.net 4.0WCF压缩是开箱即用的。

我找不到任何关于如何使用它的明确解释,我需要定义任何设置或更改绑定吗?或者是自动压缩的?

我在IIS7中使用basicHttpBinding。选项“启用动态压缩”设置为true,但是我不明白客户端是如何知道压缩请求和解压缩响应的?

将理解包括设置绑定以减小消息大小的任何解释。当在4MB带宽的远程服务器上工作时,我遇到了非常糟糕的性能。

EN

回答 4

Stack Overflow用户

发布于 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。然后,客户端将解压缩响应并继续它的快乐之路。

差不多就是这样;只需要获得正确的客户机头,并将服务器配置为发送回压缩的响应。本文将告诉您如何做到这一点。希望这能有所帮助

票数 2
EN

Stack Overflow用户

发布于 2014-04-17 07:39:24

请注意,压缩已添加到WCF 4.5中。在这里有介绍:http://msdn.microsoft.com/en-us/library/aa751889(v=vs.110).aspx

您必须使用自定义绑定来启用它:

代码语言:javascript
复制
<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

票数 2
EN

Stack Overflow用户

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10600278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档