Compressing web service request
-
21-08-2019 - |
Question
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?
Solution
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
- SOAP Message Modification Using SOAP Extensions
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.
OTHER TIPS
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.