Mar.15

Developer Days 2008

Dit jaar zullen de Developer Days plaatsvinden op 22 en 23 mei in de RAI in Amsterdam. Meer hierover is te vinden op de website van Microsoft. Ook dit jaar wordt het evenement weer gecombineerd met het MIX event.

Mar.14

IIS v6 (Windows 2003) en gecomprimeerde communicatie – Deel II

compression.JPGIn deel I was te lezen hoe je IIS 6 kunt configureren zodat er gecomprimeerd communicatie plaatsvindt. Vooral bij webservice implementaties kan dit leiden tot een reductie van de traffic van 90%. Bij beschikbaarheid van slechts een beperkte bandbreedte is het dus zeker handig na te gaan of gecomprimeerde communicatie een optie is. In deel II (en tevens het laatste deel) probeer ik te beschrijven hoe je gebruik kunt maken met een .NET webservice client van een webserver die gecomprimeerde communicatie toestaat. Standaard ondersteund .NET dit niet. Er zal dus wat moeten worden gedaan om te zorgen dat de client gecomprimeerde communicatie gaat gebruiken.

Om te beginnen is het library SharpZibLib noodzakelijk. Dit library gaat zorgdragen voor de decompressie van de te ontvangen data van een bepaalde webservice. De webservice client moet aan de server aangeven dat hij overweg kan met gecomprimeerde data. Daarom moet er in de http-header van de SOAP-request de key “Accept-Encoding” worden meegegeven met als waarden de type encodings die kunnen worden geaccepteerd, in dit geval gzip en deflate. Om te zorgen dat dit makkelijk te implementeren is in verschillende clients is het niet handig deze code op te nemen in de webservice proxyclass. De hieronder beschreven oplossing houdt daar rekening mee.

Onderstaande class verzorgt de decompressie van data:

Deze class is een overerfde van de WebResponse class. Deze class kunnen we vervolgens gebruiken in elke overerfde van een webservice client proxy class zoals hieronder beschreven. De overerfde van de proxy class maken we simpelweg aan op de volgende manier:

snoei.net.webservices.MyWebService is een door .NET gegenereerde proxy class. In bovenstaande overerfde wordt gezorgt dat automatisch bij het aanroepen van de webmethods in proxy class, in de soapheader wordt meegegeven dat de client overweg kan met compressie. Bij de ontvangst van de data wordt gecomprimeerde dan automatisch gedecomprimeerd. Als er geen compressie is ondersteund door de webserver dan functioneert de code ook gewoon correct.

Compressie kan bijzonder handig zijn in situaties met beperkte bandbreedte en overwegend communicatie van data. Kijk eens in de log files van IIS daar zijn de verschillen tussen communicatie zonder en met compressie goed te zien.