1

クライアントが Web 要求の完全なペイロードを取得する前に、取得する応答のサイズの測定値を最初にクライアントに送信したいと考えています。応答が大きすぎる場合、クライアントはユーザーにメッセージを表示し、操作を中止するオプションを提供します。

カスタム コードを記述して、サーバーに応答をプリロードし、サイズを決定してからクライアントに渡すことはできますが、それを行う別の方法がある場合はそうしたくありません。

WCFにこれを行うためのトリッキーな方法があるかどうかは誰にもわかりませんか? または、これを実現する無料のサードパーティ製ツールはありますか?

ありがとう。

4

1 に答える 1

0

WCF や .NET フレームワークでこれを行うのに「難しい」ことは何もないと思います。クライアントに何を返しますか?クラスのインスタンス?

あなたができることは、クエリを実行するか、応答をフェッチしてから、それをメモリストリームにシリアル化し、それがどれだけ大きくなるかを確認することです. これは完全に正確なサイズではありません.SOAPメッセージにはSOAPエンベロープやヘッダーなどのオーバーヘッドがあります.数メガバイト。

問題は、サーバー上でアセンブル/クエリを実行し、実際に「測定」するのに時間がかかる場合があることです。さらに、Int または Long などを返す「MeasureResult」への呼び出しと、実際に結果を取得するための「GetResult」への呼び出しの 2 つの呼び出しがほとんど必要になります。そのため、メッセージを 2 回組み立てる手間がかかります....

私は本当にあなたに良い答えを持っていませんが、時間がかかりすぎる場合にクライアントが通話を中止できるようにする他の方法を見つける必要があるかもしれません. または、(応答自体のすべての詳細を取得せずに) 応答がどれくらい大きくなるかについての指標をより迅速に把握する方法を見つけてください。

于 2010-04-29T05:26:30.590 に答える