IIS7でホストされているデュプレックス音声およびビデオチャットサービスがありますnetTcpBinding
。サービスの利用者はSilverlightクライアントです。クライアントはサービスでメソッドを呼び出します:SendVoiceAsync(byte[] buffer)
1秒間に10回(100ミリ秒ごと)、サービスは また、1秒間に10回クライアントにコールバックします(すべてのコールに応答します)。私はLANでサービスを厳密にテストしましたが、非常にうまく機能します。音声/ビデオバッファをサービスに送信する100回の呼び出しごとに、サービスはその期間に受信した音声バッファを使用して他のクライアントに100回コールバックします。しかし、私がインターネットを介してサービスを利用すると、それはひどく遅くなり、ひどく遅れ、そしてしばしば私にタイムアウトエラーを与えます。HTTPを介して、サーバーへの各呼び出しの約1/10の割合でコールバックが受信されていることに気付きました。したがって、サービスへの100回の呼び出しごとに、サーバーはクライアントに10回コールバックします。 100(LANの場合)またはそれに非常に近いもの。
では、HTTPでサービスが非常に遅くなる原因は何でしょうか。私は、netTcpBinding
パフォーマンスを最適化するための構成に関する一般的なガイドラインに従いましたが、LANで利益を得るように見えますが、インターネットではひどいものです。すべてのファイアウォールを無効にし、サービスをホストしているWebサイトが存在するポート4502-4535
とポートをサーバーコンピューターに転送しましたが、何かがクライアントのサービスへの応答の送信をブロックしているように感じます。80
それが役立つ場合、私のサービスはにConcurrencyMode
設定されてMultiple
おり、にInstanceContextMode
設定されていSingle
ます。また、私のサービス操作はすべて一方向であり、要求/応答ではありません。
助けてくれてありがとう。