У меня есть.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 могли быть сделаны?
Если вы хотите использовать коммерческий компонент, попробуйте 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();