1

私のアプリケーションでは、ユーザーが処理された CSV ファイルをアップロードし、レコードがデータベースに書き込まれます。しかし、このファイルには、たとえば 300,000 などの非常に多数のレコードが含まれる可能性があります。この場合、このすべてのレコードを処理するのに最大 30 分かかる場合があります。この期間、アプリケーションでページをフリーズしないようにしたいのですが、進行状況とおそらくいくつかのエラーを表示するか、ユーザーが別のページに移動して、時々戻ってプロセスを確認できるようにする方がよいでしょう。どうすればそれを達成できますか?

4

1 に答える 1

0

同様の問題を解決するために私たちが取ったアプローチは次のとおりです。

通常の http メソッドを使用してファイルをアップロードします。

ファイルをローカルに保存します。

ファイルを非同期 Web サービス (.asmx) に送信します。このプロセスは、インポートのステータスを保存するレコードを挿入し、実際にレコードのインポートを開始します。すべてのレコードが処理されたら、それに応じてステータスを設定します。

これはすべて 1 つのフローで行われます。WebMethod は非同期であるため、それ自体が完了するのを待たずに戻り、バックグラウンドでインポートが行われます。

非同期インポートが完了するまで、そのステータスを定期的にチェックするページにユーザーをリダイレクトします。レコードをバッチ化し、それに応じて別のフィールドを更新することにより、進行状況などの追加情報をこのプロセスに追加することもできます。

これは、長年にわたって私たちにとってうまく機能しています。実装に固有のものになるため、実際の詳細は追加していません。

于 2012-08-16T07:42:23.237 に答える