私はWCF WebサービスにアクセスするSilverlight 2 Beta 2アプリケーションを持っています。このため、現在のところ、basicHttpバインディングのみを使用できます。 Webサービスは、XMLデータのかなり大きな金額を返します。これは、帯域幅の使用の観点からは、レスポンスが圧縮された場合、5分の1(実際にはレスポンスをtxtファイルに貼り付けて圧縮したもの)としてかなり無駄に見えます。SilverlightでWCFに圧縮を追加する最も簡単な方法は何ですか?
要求に「Accept-Encoding:gzip、deflate」があります。 - WCFサービスで応答をgzip(または圧縮)する方法はありますか?
私はこれを見つけましたlinkしかし、それは確かにすぐに使用できるIMHOで処理する必要がある機能のための少し複雑なようです。
OK - 最初は、System.IO.Compressionを答えとしてマークしました。私は決してIIS7の動的圧縮を機能させることはできませんでした。まあ、結局のところ:IIS7 上
動的圧縮は、アルに沿って取り組んました。それはちょうどIEのためのNikhilのウェブ開発者ヘルパープラグインがそれを働かせることを示さなかったことである。私の推測では、ブラウザが「カバーの下に」それを処理し、ニキルのツールは、圧縮された応答を見たことがないことを、ブラウザにオフSLの手からのWebサービスの呼び出しということです。ブラウザアプリケーションの外部にあるトラフィックを監視するFiddlerを使用してこれを確認できました。フィドラーでは、応答は、実際には、gzip圧縮された!
System.IO.Compressionソリューションで、他の問題は、System.IO.Compressionは、SilverlightのCLRに存在しないということです。だから、
私の観点から、SilverlightでWCFの圧縮を有効にする最も簡単な方法は、IIS7で動的圧縮を有効にして、まったくコードを書いていないことです。
動的圧縮は、一部の要求(つまり、頻繁に呼び出されるIISと見なされるもの)に対してのみ機能します。だから素晴らしい機能ですが、あなたはそれを制御できません。ユーザーがログインしたときに私は本当に大きなコールを持っていますが、1日に1回のように起こります。それは圧縮されていません。 –