SOAP サービスとしてセットアップされた WCF サービスを作成しました。データベースからデータを読み取り、応答を組み立ててクライアントに返します。必要なすべてのデータをデータベースからクエリし、応答全体をメモリに集めてクライアントに返すため、データ量が多い場合は大量のメモリが必要になる可能性があります。
基本的に、クライアントはデータベースから特定のレコードを要求しています。これにはブロブが含まれており、そのサイズを制御することはできません。データのサイズは 10k から 3mb 程度になると予想されます。データをデータベースから WCF 応答にストリーミングして、メモリ内の 3 MB を一度にすべて読み込む必要がないようにするために採用できる手法はありますか?
編集:もともと、これはHow to handle large file uploads via WCF?
の複製である可能性があると思いました
か? 、しかし、そのソリューションでは、Stream を OperationContract のパラメーターとして使用する必要があります。私の場合は、リクエストのパラメーターを複雑なオブジェクトにする必要があります。これは、サービスの結果の WSDL に反映されます。
[ServiceContract]
public interface IFileUpload
{
[OperationContract]
bool UploadFile(Stream stream);
}