3

ユーザーごとに大きなファイルをアップロードするには、WCFサービスが必要です。

次のどれがより最適化されたパフォーマンスを提供します

  [OperationContract]
  public void UploadFile(Stream inputsreaam);

また

   [OperationContract]
   public void UploadFile(byte[] buffer);

他の提案は大歓迎です

4

2 に答える 2

4

非常に大きなファイルをアップロードする場合は、Streamファイルを使用してください。2 Gbファイルをbyte[]として転送すると、これはサーバー上のメモリにロードされ、どこかに保存できる場合に限ります。ストリームを使用すると、クライアントストリームから読み取り、サーバー上のファイルまたはDBストリームに書き込むことができ、実際にはメモリ内にデータの小さなチャンクのみが含まれます。パフォーマンスに戻る:非常に大きなファイルと複数のクライアントがある場合、byte[]はメモリ不足のためにサーバーをフリーズさせる可能性があります。

このチュートリアルも役立つ場合があります。

于 2012-10-18T18:27:27.907 に答える
2

通常、最初の (Streamパラメーター)。パラメーターを取得していてStream、WebHttpBinding / WebHttpBehavior のエンドポイント (つまり、Web または REST エンドポイント) を使用している場合、Stream パラメーターはエンコードなしで要求本文全体にバインドされます。この場合、2 番目の ( byte[]) を使用している場合、パラメーターは形式に応じて配列としてエンコードする必要があります (XML の場合、base64 としてエンコードされたバイト; JSON の場合、バイトを表す数値の実際の配列)。

ただし、Web エンドポイントを使用していない場合 (つまり、SOAP エンドポイントを使用している場合) は、Stream または byte[] パラメータがSOAP bodyにバインドされ、SOAP エンドポイントがメッセージはすでにエンコードされています。

于 2012-10-18T18:21:55.983 に答える