次の方法で動作するクライアントにファイルを配布するために使用しているWCFサービスがあります。
- クライアントはファイルをサービスに送信します
- 他のクライアントは、ファイルを要求するサービスをポーリングします
- サービスにファイルがある場合は、pollメソッドの結果としてそれらを返します
問題は、低速のインターネット接続で大きなファイルを処理するときに、ファイルをクライアントに返すときにサービスがブロックされているように見えることです。
別のクライアントからサービスに接続しようとすると、進行中の転送が完了するまでサービスが応答しません。また、ログエントリを書き出すサービスにタイマーがあります。それらも転送が完了するまで停止します。
何かが足りないと思いますが、WCFは初めてで、サービスのブロックを防ぐために何が足りないのかわかりません。
コールバックを使用してファイルを別々のスレッドで送信できると思いますが、適切なを判断できないため、これが適切かどうかはわかりませんSendTimeout
。
私はnet/tcpバインディングを使用しています。