2

.NETクライアントアプリによって使用される.NETアプリ(IISではない)によって公開されるADO.NETデータサービスがあります。このデータサービスを呼び出すと、大量のデータが返されます。

ペイロードを減らしてパフォーマンスを向上させるために、ネットワーク上のXMLデータを圧縮したいと思います。これは可能ですか?

4

2 に答える 2

9

.NET「アプリ」でWCFを使用してホストしていると思いますか? MessageEncoderその場合、 WCF はそのままでは提供しないため、カスタム実装を作成する必要があります。幸いなことに、SDKに使用できるサンプルがあります。

あなたのクライアントがWCFでもあるかどうかに応じて、これは2つのステップのうちの1つにすぎないことに気付きましたか? これによりメッセージがエンコードされますが、クライアントが同様に構成されたデコーダーを使用している必要があります。その実装では、「純粋な」HTTP クライアントに対してエンコードが行われたことを通知するために必要な HTTP ヘッダーが設定されないためです。したがって、相手側が WCF クライアントでない場合は、メッセージ自体をエンコードするだけでなく、 を使用して適切なヘッダーWebOperationContextを適用する必要があります。Content-Encoding: gzip残念ながら、実装自体の中でこれを行うことはできませんMessageEncoder。プロセスが遅すぎるためです。MessageEncoderメッセージ フレーム (この場合は HTTP ヘッダー) にメッセージの内容を書き込むように求められますが、既に書き込まれています。IOperationBehaviorそのため、それに応じてヘッダーを設定する操作に適用されるの形式の追加の動作も必要になります。

于 2009-11-12T17:49:03.547 に答える
0

GZipStreamを使用して圧縮および解凍できます。

于 2009-11-07T01:12:25.297 に答える