私は、データベース内のファイルを更新または追加するaspx Webアプリケーションを持っています。クライアントはブラウザを介してアクセスし、要件の1つは、更新が開始され、更新が継続している間にブラウザを閉じることができることです。私はブラウザを閉じた後に少し動いているように見えますが、それは止まります。 asp.netのためにアプリケーションをどのように実行し続けることができますか?ブラウザ終了後にWebアプリケーションを実行し続ける
答えて
それはWF (Workflow Foundation)で非常にうまく解決できるものです。ブラウザを終了しても残るはずのタスクのワークフローを作成します。ワークフローには、ASP.NETとは別の独自のスレッドとライブサイクルがあります。
別のWindowsサービスを作成して、Webアプリケーションからジョブをプッシュして、ユーザーが再びログインしたときにジョブのステータスを確認できます。
Windowsサービスはasp.netアプリケーションドメインに関連付けられないため、Webアプリケーションで何が起きているかに関係なく実行されます。
ウェブアプリケーションはアプリケーションプールで稼動し続けますが、最終的にリサイクルされます。ユーザーセッションが実行されている間は、アプリケーションを有効に保つ必要があります。そのため、セッションのタイムアウトを調整することで問題を解決できます。
ただし、長期実行タスクをサービスに移行する方が良い方法ですが、アプリケーションの書き換えが必要な場合があります。
通常、長期実行または非同期処理の場合、処理するバックエンドサービスに要求をディスパッチする必要があります。 Webアプリケーションを処理し続けるようにしようとすると、特にHTTPとセッションタイムアウトで問題が発生する可能性があります。
一般的なパターンは、要求をメッセージキューに置き、可能な場合にはバックエンドサービスに処理させることです。
私はこのパターンを実行しており、HTTP要求から作業を分離する必要があります。私たちが解決した方法は、スケジューリングされるイベントとして実行されるコンピューティングを抽象化することです。したがって、ブラウザのユーザーがバックエンドで長時間の(比較的)計算を必要とするアクションを実行すると、この計算には「doXYZForUser」のような名前が与えられ、(userId、params ...のような)作業キューに送信されます。将来、ユーザは再びログインして、自分の仕事のステータスを見ることができます。
私はJavaスタックとJava Message Service(JMS)を実行していますが、原則は同じです。ブラウザからの要求はイベントをキューに入れ、ブラウザはそのイベントが作業キューにあることを示すACKを返します。キューは、完全に独立して実行されるプロセスによって管理されます。これは、.NETでは単にメッセージキューと呼ばれると考えられています。キュー上のジョブが処理され、その結果は、ジョブを開始したユーザーへの参照を含む別のテーブルに置くことができるため、次回のジョブのログイン時に結果を返すことができます。
- 1. ブラウザ()の後に実行を続ける
- 2. 終了後、アプリケーションを実行し続けるにはどうすればよいですか?
- 3. iphoneでアプリケーション終了後にバックグラウンドスレッドを実行するには?
- 4. Visual Studio 2015のデバッグセッションの終了後にIIS Expressが実行され続ける
- 5. ブロードキャスト受信者はアプリケーション終了後も続行します
- 6. アプリケーションが終了した後もブロードキャストレシーバーを稼働させ続ける
- 7. アプリケーションは理由なしで終了し続ける
- 8. 強制終了してもNSTimerを実行し続ける方法
- 9. 私はバックグラウンドで実行中に数分後にアプリケーションを終了したい
- 10. コンテンツページレスポンス終了中マスターページの継続実行
- 11. netbeans内のプログラムは実行終了時に終了せず、「実行中のタスク」として実行し続ける
- 12. Androidの簡単なOCRアプリケーションを実行した後に強制終了
- 13. スクリプトの終了後にMySQLが挿入され続ける
- 14. 終了後にPHPアプリケーションをデバッグする
- 15. PHPからコマンドを実行し、スクリプトを終了しますが、コマンドを実行し続ける
- 16. 関数が終了した後にjavascriptを実行します。
- 17. recaptcha.reload()が終了した後にコードを実行します
- 18. Cocos2d CCActionが数回実行した後に終了する
- 19. アプリケーションを終了した後のPhoneGapドロップデータベース
- 20. pthreadは実行終了後にpthread_t値をリセットしますか?
- 21. メソッドの終了後にスレッドを実行しますか?
- 22. スレッドが終了した後に文を実行
- 23. UIViewアニメーションの終了後にコードを実行しますか?
- 24. 複製終了後にプロシージャを実行します
- 25. cleartimeout関数が終了した後に実行します(jQuery)
- 26. プロセスが終了するまで待ってから実行を続ける - C#
- 27. Androidアプリケーションを実行してUnityアクティビティを終了する方法
- 28. 終了時にアプリケーションを終了する
- 29. VB.NETアプリケーション終了後にメッセージボックスを残す
- 30. このアプリケーションを実行すると強制終了します
あまりにも遅い –