2

呼び出されて実行されるasp.netページである長期実行データ転送プロセスがあります。完了するまでに最大で数時間かかる場合があります。それは大丈夫なようですが、私はこのような長いプロセスを処理するためのより一般的な方法のいくつかは何であるか疑問に思っていました。アプリケーションを作成して、Windowsスケジューラ、またはWebサービスやカスタムハンドラーを介して実行しますか?

4

4 に答える 4

2

Webアプリケーションで長時間実行されるタスクのプロジェクトで、Windowsサービスを作成しました。ユーザーが時間のかかるタスクを実行する必要がある場合は常に、IISはトークン(タスクの一時的な名前)を返すサービスにタスクを渡し、バックグラウンドでサービスがタスクを実行します。ユーザーはいつでも、キューで保留中、処理中、または完了したタスクのステータスを確認できます。このサービスは、固定数のジョブを並行して実行し、次の着信タスクのキューを保持します。

于 2010-08-26T18:13:03.527 に答える
2

Windowsサービスが典型的なソリューションです。Webサービスやカスタムハンドラーはどちらもアプリプールのリサイクルの餌食になり、プロセスが停止するため、使用ないください。

于 2010-08-13T14:09:22.817 に答える
0

Windows WorkflowFoundation

私がWFについて最も魅力的だと思うのは、ワークフローをそれほど複雑にすることなく設計してSQL Serverで永続化できるため、プロセスの途中でサーバーが再起動した場合にワークフローを再開できることです。

于 2010-08-13T14:06:48.270 に答える
0

BAのニーズに応じて、2種類のプロセスを使用します。オンデマンドで実行され、定期的にスケジュールできる転送プロセスの場合、通常、コマンドラインパラメーターを受け入れるWinForms(これは個人的な好みです)アプリケーションを作成して、パラメーターを使用してジョブをスケジュールしたり、インタラクティブウィンドウからオンデマンドで実行したりできます。私は過去数年にわたってそれらを十分に書いてきたので、この種の新しいアプリケーションを作成するために使用する独自の基本的な汎用シェルを持っています。イベント(フォルダーに表示されるファイル、Cyber​​Mation呼び出しの受信、またはSNMPトラップの検出)を検出する必要があるプロセスの場合、常に利用できるようにWindowsサービスを使用することを好みます。メモリ使用量、リーク、リサイクル、セキュリティなどにもっと注意する必要があるという理由だけで、少し注意が必要です。私にとっては、Windowsアプリケーションは、IISプロセスを介する場合よりも、長時間のジョブでより高速に実行される傾向があります。これがIISスレッドに接続されているためなのか、それともメモリ/セキュリティがより制限されているためなのかはわかりません。私はそれを調べたことがありません。

.Netアプリケーションは、リソースに対して多くの柔軟性と管理を提供し、いくつかの標準と実践により、かなり迅速に打ち負かされ、非常に良い結果を生み出すことができることを私は知っています。

于 2010-08-13T14:13:08.130 に答える