Сжатие как GZip WCF запрашивает (SOAP и REST)

У меня есть.NET 3,5 веб-приложения, размещенные в Windows Azure, который выставляет несколько конечных точек WCF (и SOAP и REST). Конечные точки обычно получают 100x больше данных, чем они служат (партия данных является загрузкой, намного меньше загружаются).

Следовательно, я готов воспользоваться преимуществом от HTTP сжатие GZip, но не с точки зрения сервера, а скорее с клиентской точки зрения, отправляя сжатые запросы (возвращающий сжатые ответы был бы прекрасен, но не принесет много усиления так или иначе).

Вот небольшой отрывок C#, используемый на стороне клиента для активации WCF:

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

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

Какая-либо идея, как скорректировать поведение так, чтобы сжатые Запросы HTTP могли быть сделаны?

1
задан Joannes Vermorel 1 May 2010 в 07:49
поделиться

1 ответ

Если вы хотите использовать коммерческий компонент, попробуйте 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(); 
2
ответ дан 3 September 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: