24 Stimmen

Was ist der einfachste Weg, um die Kompression zu WCF in Silverlight hinzuzufügen?

Ich habe eine Silverlight 2 Beta 2 Anwendung, die auf einen WCF-Webdienst zugreift. Aus diesem Grund kann es derzeit nur basicHttp Bindung verwenden. Der Webservice wird ziemlich große Mengen an XML-Daten zurückgeben. Dies scheint ziemlich verschwenderisch aus Sicht der Bandbreitennutzung, wie die Antwort, wenn gezippt, wäre kleiner um einen Faktor von 5 (ich tatsächlich eingefügt die Antwort in eine txt-Datei und gezippt.)

Die Anforderung hat die "Accept-Encoding: gzip, deflate" - Gibt es eine Möglichkeit haben die WCF-Dienst gzip (oder anderweitig komprimieren) die Antwort?

Ich habe Folgendes gefunden Link aber es scheint ein bisschen kompliziert für eine Funktion, die IMHO sofort einsatzbereit sein sollte.

OK - zuerst habe ich die Lösung mit der System.IO.Compression als die Antwort markiert, da ich die dynamische Komprimierung von IIS7 nie zum Laufen bringen konnte. Nun, wie es sich herausstellt:

  1. Dynamische Komprimierung auf IIS7 fue arbeiten alle mit. Es ist nur, dass Nikhil's Web Developer Helper Plugin für IE nicht zeigen es funktioniert. Ich vermute, dass SL den Aufruf des Webdienstes an den Browser weitergibt, der Browser ihn "im Verborgenen" bearbeitet und Nikhils Tool die komprimierte Antwort nie sieht. Ich konnte dies mit Hilfe von Fiddler bestätigen, das den Datenverkehr außerhalb der Browseranwendung überwacht. In Fiddler war die Antwort in der Tat gzip-komprimiert!!

  2. Das andere Problem mit der System.IO.Compression Lösung ist, dass System.IO.Compression nicht in der Silverlight CLR existiert.

Aus meiner Sicht ist der einfachste Weg, die WCF-Komprimierung in Silverlight zu aktivieren, die dynamische Komprimierung in IIS7 zu aktivieren und überhaupt keinen Code zu schreiben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X