ファイルをダウンロードするためにアップデーターサービスと通信するクライアントアプリケーションがあります。アップデータサービスは、それらをデータベースから取得し、WCFを使用してクライアントに送信します。現時点では、WSHttpBindingを使用しているため、セキュリティを利用できます。だから私がダウンロード/送信している最大のファイルは約8 MBで、これは正常に動作します。私は最近、130 MBくらいのファイルで試してみましたが、クライアント上で何も起こりませんでした。ネットワーク使用率はわずか0%でした。ストリーミングを使用する前に、WCFで転送されたバイト数はいくつですか?
私はストリーミングせずにファイルを転送するには大きすぎると考えています(maxReceivedMessageSizeなどは209715200と同じですので、設定が正しいことがわかります)。この問題を解決するには、サービスがBasicHttpBindingを使用するようにして、特定のサイズよりも大きい場合にファイルをストリームすることができます。
私の質問は、WSHttpBindingからBasicHttpBindingとストリーミングに切り替える必要があります。 1つは従うべき標準の何らかの種類ですか?とにかく私の論理は完全に間違っていますか?
ストリーミングでも、SQLデータベースからファイルを取得しているので、各発信者のメモリに100MBのファイルが必要ではありません(20人の呼び出し元=まだ2GMのRAM)。実際にメモリ内のファイル全体を取得することなく、データベースからクライアントへの「ブリッジ」としてWCFサービスを使用できる方法はありますか?または、何らかの形でメモリにコピーを1つだけ残して、すべての発信者が受信するまでコピーを保持できますか? – Marcus