5

Silverlight 4 とポーリング デュプレックスを使用してストリーミング レスポンスを有効にしようとしていますが、更新がクライアントに送信されるレートが maxOutputDelay よりも大きく、更新が送信されない場合に奇妙な動作が発生します。

たとえば、maxOutputDelay を 7 秒に設定し、10 秒ごとに 1 つの更新を送信すると、すべて正常に動作します。しかし、maxOutputDelay が 1 秒で、更新が 500 ミリ秒ごとに送信される場合、更新はサーバー側に留まり、クライアントに送信されません。

transferMode="StreamedResponse" を設定すると更新がクライアントにすぐに送信されるはずですが、これは機能していないようです。

Web サービスの Web.config のバインディングは次のとおりです。

この構成は、次の記事の情報に基づいています: http://blogs.msdn.com/b/silverlightws/archive/2010/06/25/http-duplex-improvements-silverlight-4.aspx

ありがとう。

4

2 に答える 2

0

この記事は質問に答えると思います:

http://blogs.msdn.com/b/silverlightws/archive/2010/07/16/pollingduplex-multiple-mode-timeouts-demystified.aspx

maxOutputDelayは、メッセージ内タイマーのようなものです。したがって、メッセージレートがこの遅延を超える場合、バッファがいっぱいになるまでフラッシュをトリガーすることはありません。キューに追加された新しいメッセージごとにリセットされます。したがって、実際の最大レイテンシーを達成するには、キューサイズとこのタイマーを調整する必要があると思います。

ストリーミングされた応答がまだバッファリングされている理由はわかりませんが、それもわかります。誰かがそのバッファサイズを調整する方法を知っていますか?

[編集]わかりました。この記事では、ストリーミング応答のバッファリングを制御できないと述べています(セルフホストでは16k、IISでは32kです)。したがって、それを考えると、maxoutputdelayよりも速いレートで着信する小さなメッセージは病的なケースのようです。多分私はそれらにデータを埋める必要があります...

http://blogs.msdn.com/b/silverlightws/archive/2010/06/25/http-duplex-improvements-silverlight-4.aspx

于 2012-02-29T04:44:01.957 に答える