压缩为GZip WCF请求(SOAP和REST)

时间:2010-05-01 07:49:41

标签: .net wcf compression gzip azure

我在Windows Azure上托管了一个.NET 3.5 Web应用程序,它公开了几个WCF端点(SOAP和REST)。终端通常接收数据量比服务数据多100倍(上传大量数据,下载的数据少得多)。

因此,我愿意利用HTTP GZip压缩,但不是从服务器的角度来看,而是从客户端的角度来看,发送压缩的请求(返回压缩的响应会很好,但不会带来太大的收益)。

以下是客户端用于激活WCF的小C#片段:

var binding = new BasicHttpBinding();
var address = new EndpointAddress(endPoint);

_factory = new ChannelFactory<IMyApi>(binding, address);
_channel = _factory.CreateChannel(); 

知道如何调整行为以便可以进行压缩的HTTP请求吗?

1 个答案:

答案 0 :(得分:2)

如果您想使用商业广告,请尝试this。它为请求和响应提供基于标准的HTTP压缩。我不确定Azure是否支持解压缩压缩请求,如果不支持,那么您也可以在Azure上使用它来提供解压缩。以下是根据需要修改的绑定:

using Noemax.WCFX.Channels;

var binding = new BasicHttpBinding();
var address = new EndpointAddress(endPoint);

ContentNegotiationBindingElement contentNegotiation = new ContentNegotiationBindingElement();
contentNegotiation.CompressionMode = SmartCompressionMode.Optimistic;

binding = contentNegotiation.PlugIn(binding);

_factory = new ChannelFactory<IMyApi>(binding, address);
_channel = _factory.CreateChannel();