0

私は、ユーザーが解析されるファイルをサーバーにアップロードするプロジェクトに取り組んでいます。

アップロードが完了したときにユーザーがステータスメッセージを受信し、解析のステータスに関する更新についてサーバーをポーリングできるようにしたいと思います。

クライアントがサーバーからアップロード成功メッセージを受信すると、2秒ごとにステータスのポーリングを開始するajaxファイルアップロードを使用することを考えていました。サーバーにパーサーの実行を継続させ、その実行のステータスを追跡できるようにしながら、ユーザーにデータを返す方法がわかりません。

コントローラからビューが返された後、スクリプトの実行を継続するための最良の方法は何ですか。

編集:

別のプロセスを生成する必要があるのではないかと思いますが、これを行う方法がわかりません。

4

3 に答える 3

2

この特定のケースでは、ファイル処理をWebリクエストから切り離すのが理にかなっていると思います。CMによって提案されたThreadPool.QueueUserWorkItemアプローチは1つのオプションですが、実際のキューイングメカニズム(MSMQやRabbitMQなど)の使用を検討し、別のアプリケーションでアップロードを処理することもできます。このようにして、Web層はビジネスプロセスから切り離され、必要に応じて各部分を個別にスケーリングできます。

于 2012-06-20T19:45:34.827 に答える
0

SignalR(https://github.com/SignalR/SignalR)をご覧ください。これは、クライアントとサーバー間の通信が非常に簡単なWebWebアプリを構築するためのライブラリです。

バックグラウンド処理の方法を知りたい場合は、スレッドを使用して、Webページがユーザーに返された後でも実行されるスレッドを起動できます。StackOverflowとWebには、この例がたくさんあります。

于 2012-06-20T18:01:47.563 に答える
0

これが行われているのを確認した簡単な方法は、ステータスのバックグラウンドスレッドを追跡する静的リストとともにThreadPool.QueueUserWorkItemを使用することです。

于 2012-06-20T18:45:23.673 に答える