C#, C♯, C#相談室 Part52
■ このスレッドは過去ログ倉庫に格納されています
0197デフォルトの名無しさん
2009/04/14(火) 23:00:27いるんですが、クライアントからデータを検索する必要があります。検索条件
によっては、戻り値のデータが数万件になることもあります。
そこで、WCFのバインディングのmaxReceivedMessageSizeを大きくして対処
しようと思ったのですが、途中でキャンセルできる必要とサーバのメモリを
節約する必要が生じました。
どのように実装するのがいいでしょうか?
現在の処理)
1. クライアントが検索条件を指定してサーバを呼ぶ
2. サーバは検索条件によって、SQL Serverの複数のテーブルを検索し、複数
レコードからオブジェクトを組み立てる
3. オブジェクトの配列(やツリー構造)が出来上がったらクライアントに返す
案)
1. サーバはDataReaderでデータベースを検索しているので、一定レコード数
ごとに結果をクライアントにレコード単位でコールバックする。オブジェクト
はクライアント側で組み立てる。
2. DataReaderからデータを読みつつ、一定オブジェクト数ごとに結果をクラ
イアントにコールバックする。ただし、各オブジェクトの大きさはそれぞれ違
うので、オブジェクトの数ではメモリ使用量は計れない。
3. クライアントでデータ取得依頼だけして、数秒おきにサーバに結果を取りに
行く。
4. 戻り値はStreamとし、オブジェクトが出来るたびにStreamにオブジェクトに
入れ、クライアントはそのたびにオブジェクトをデシリアライズする。ただし、
DataReaderを読みつつStreamにオブジェクトを入れる方法がまだ分かってない。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています