WCF Web サービスにアクセスする Silverlight 2 ベータ 2 アプリケーションがあります。このため、現在は basicHttp バインディングのみを使用できます。Web サービスは、かなり大量の XML データを返します。これは、帯域幅の使用の観点からはかなり無駄に思えます。応答を圧縮すると 5 分の 1 になるからです (実際には、応答を txt ファイルに貼り付けて圧縮しました)。
リクエストには「Accept-Encoding: gzip, deflate」があります。WCF サービスでレスポンスを gzip (または圧縮) する方法はありますか?
私はこのリンクを見つけましたが、すぐに使用できる機能については少し複雑に思えます。
OK - 最初は、System.IO.Compression を使用するソリューションを答えとしてマークしました。さて、結局のところ:
IIS7での動的圧縮はずっと機能していました。IE 用の Nikhil の Web Developer Helper プラグインが動作していないことがわかりました。私の推測では、SL は Web サービスの呼び出しをブラウザーに渡すので、ブラウザーはそれを「隠れて」処理し、Nikhil のツールは圧縮された応答を決して見ることはありません。これは、ブラウザ アプリケーションの外部のトラフィックを監視する Fiddler を使用して確認できました。フィドラーでは、応答は実際には gzip 圧縮されていました!!
System.IO.Compression ソリューションのもう 1 つの問題は、Silverlight CLR に System.IO.Compression が存在しないことです。
したがって、私の見解では、Silverlight で WCF 圧縮を有効にする最も簡単な方法は、IIS7 で動的圧縮を有効にし、コードをまったく記述しないことです。