I have a webservice and client in c#/dotnet and I am using EnableDecompression to gzip compress the responses that I get from the web server. Is it possible to compress the requests as well?
SOAP extensions allow you to monkey with the SOAP stream on both the client and server. They're nice because you can leave your service code alone - manipulation occurs before a webmethod begins and after it ends. They work a lot like an HttpModule but can be included on the client/request side as well.
- http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapextension.aspx
- http://msdn.microsoft.com/en-us/magazine/cc164007.aspx
- http://www.theserverside.net/tt/articles/showarticle.tss?id=SOAPExtensions
Other than that, the only option that comes to mind is manually serializing and compressing large SOAP elements as byte[], then manually decompressing and deserializing on the server (shudder...). The maintenance issues with this approach are likely prohibitive.
I've found this tutorial on compressing SOAP messages in C#, using the SharpZipLib library and SOAP extensions:
Seems to garnish about a 30% compression, will be giving this a try today.