ASP.NET MVCで簡単なpdfアップローダを実装しました。アップロードしたドキュメントを処理する必要があります。処理にはしばらく時間がかかりますので、バックグラウンドで処理してほしいです。 ワークフローは次のようなものです: 私はユーザに文書をアップロードしてもらい、文書がデータベースに保存されると、新しい文書のアップロードを含め、Webサイト上で他の作業を行うことができるはずです。ユーザーはバックグラウンドでの処理について何も知ってはいけません。バックグラウンドタスクの開始ASP.NET MVC 4.5
私の実装は次のようになります。
[HttpPost]
public async virtual Task<ActionResult> Confirm(string author, string title)
{
//...
previousDocumentIsProcessing = true;
await InvokeDocumentProcessor(_document.Path, _document.DocumentID);
previousDocumentIsProcessing = false;
return View("Success");
}
問題は処理が行われた後、「成功」ビューが表示されているということです。操作は非同期であるため、ユーザーはクリックして他の作業を行うことができますが、バックグラウンドプロセスを作成して開始し、すぐに「成功」ビューを表示することができます。ユーザーは処理に煩わされるべきではありません。
どうすればこの問題を解決できますか? 私はバックグラウンドワーカーを試しましたが、動作しませんでした。(その時点で非同期プロセスを開始できないというエラーが表示されました)
私がやっているすべては、PDF(単語単位)の内容を抽出し、中にそれを保存しているので、私は、ユーザーが処理を意識するべきではないかなり確信していますアップロードされたドキュメントを検索可能にするためにWindows Azureのソリューションは本当にうれしいですが、これは簡単な大学プロジェクトであり、Windows Azureを使用することは選択肢ではありません。私は "不適切な"解決策を検討し、あなたに連絡します。回答ありがとうございました:) – mobearette
Azureワーカーロールと同じようにWindowsサービスまたはコンソールアプリケーションを実行できます。 Stephenはパターンの実装について提案しました。 –
修正。 Azureの例は単なる例に過ぎませんでした。ローカルファイルシステム、MSMQ(またはローカルデータベース)、およびWin32サービス(それぞれ)を使用することもできます。 –