私のチームは、とりわけインポート機能を含むASP.NETアプリケーションを開発しています。インポートは、通常、ユーザがインポートするローカルファイルを含むウェブページにいくつかの設定を入力することによって開始される。ユーザーが「インポート」を押すと、ファイルをアップロードしてからインポートする必要があります。ASP.NETアプリケーションのバックグラウンドジョブ
インポートはかなり時間がかかるので、aspx.csコードから直接行うことはできません。バックグラウンドで行う必要があります。また、一旦ファイルがアップロードされると、インポートは失われません。私はまた、を開始するインポートをしたいと思います。サービスやスケジュールされたタスクを待つ必要はなく、X分ごとに利用可能な仕事をチェックするだけです。
私がこれまでに代替案として発見したことはある:ASP.NETでのThreadPoolまたは類似から
- バックグラウンドスレッド。主に動作しますが、アプリケーションプールをリサイクルすると作業が失われます。
- 定期的にDB内の作業表をチェックし、インポートを実行するタイマーによるサービス。動作しますが、遅延があるか、DBからの作業要求が頻繁に発生します。
- 変更通知クエリによるサービス(正確な名前はわかりませんが、SQLサーバーからの変更をサブスクライブすることは可能です)。
- サービスがMSMQを介して作業項目を取得しています。
- リサイクルを避けるため、システムサービス内でホストされ、ASP.NET内ではホストされないWCFサービス。 WCFサービスはASP.NETから内部的に呼び出されるか、AJAXを介してクライアントから直接公開され呼び出されます(非IISホストWCFがAJAXエンドポイントを公開できる場合)。
他の方法はありますか?上記の選択肢の経験がある人はいますか?