2011-01-11 9 views
2

例を実装する際にいくつか問題がありました。 Silverlightクライアント上のファイルを解析し、basicHttpBindingを使用して大量のオブジェクトをWCFサービスに送信するインポートルーティンです。WCF上で大きな輸入品をハンドリングするベストプラクティス?

maxBufferSize、maxRecieveSizeなどを最大値に設定しましたが、コード内でオブジェクトのコレクションを自分自身でチャンクしていくつかの呼び出しを行うのでなければ、失敗します。

だから、巨大なオブジェクトのコレクションを使って通話をする良い方法について経験がある人はいますか?

+0

amazon s3では、大きなファイルにはマルチパートファイルapiが使用されています。http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?uploadobjusingmpu.html – svrist

答えて

2

同じことが...私のチームに起こった、我々はしていましたWPF。

私はこれが最も魅力的な方法ではないことを知っていますが、私のチームと私はテキストファイルを取り込み、バイト配列に変換して、バイト配列をワイヤに渡して成功しました。 WCFはバイト配列で非常に効率的です。ファイルを読み込むこと

、我々はクライアント上で次の操作を行います。
fileByteArray = File.ReadAllBytes(fileLocation);

そして当社のサービス・インターフェースは、このように見えた: [ServiceContract]
public class IImport
{
[OperationContract]
BulkResults ImportFromFile(byte[] importFile);
}

我々はまた、あまりにもバッファ/ストリーミングアプローチを試してみました私たちはすべてのサービスをStreamingに切り替えました。これはメモリ消費にも役立ちました。

2

キリスト教徒、私はTransferModeで遊んだ経験がありました。デフォルトではbufferedです。 私のケースではStreamedResponseに変更すると、メモリが大量に消費されることなく大量のデータを返すことができました。

ここ

より:私たちはSLで働いていなかった以外

  1. http://msdn.microsoft.com/en-us/library/system.servicemodel.transfermode.aspx

  2. http://blogs.msdn.com/b/carlosfigueira/archive/2010/07/08/using-transfermode-streamedresponse-to-download-files-in-silverlight-4.aspx

関連する問題