0

私は比較的新しい開発者ですが、いくつかのXMLファイルを集約するアプリケーションに取り組んでいます。1つの特定のコントローラーの場合、リモートRESTベースのサービスに対して約25回の呼び出しが行われ、すべての呼び出しを完了し、データを解析してビューを返すのに約5〜7秒かかります。コントローラの結果を30分間キャッシュしています。

私が避けたいのは、ユーザーがキャッシュの有効期限が切れるまで7秒間待たなければならないことです。したがって、私の考えは、XMLファイルを単一のローカルファイルに集約してクエリできるメソッドを30分ごとに実行することです。したがって、コントローラーはサービスを直接呼び出すのではなく、保存されているファイルを呼び出すだけです。

IISにリモートアクセスできるので、その方法でタスクを設定することはできません。アプリケーション層ソリューションである必要があります。提案?

4

4 に答える 4

3

スケジューリングサービスであるQuartz.NETを使用できます。埋め込みモード(IISアプリプールのプロセスで実行され、アプリで簡単に展開できる必要があります)で実行することも、スタンドアロンサービスとして実行することもできます。アプリケーションプールは頻繁にリサイクルされるため(デフォルトでは29時間ごと、特定のアイドル時間の後、サーバーの再起動、または任意の数のイベント)、後者の方がはるかに信頼性が高くなります...手動で行う必要がありますサイトにアクセスして、アプリプールを起動します(自動起動しない限り)。

ただし、あなたのタスクはそれほど重要ではないようです...したがって、Quartz.netを組み込むことを強く検討します。いくつかの例を次に示します。

また、Windowsタスクスケジューラを検討することもできます。

于 2012-04-20T20:09:49.263 に答える
1

理論的には、Global.asaxでいくつかのスレッドを開始して、データを非同期にフェッチし、それらをASP.NETキャッシュに配置することができます。作成したスレッドがASP.NETのスレッドプールからポップされないように注意してください。タスクの状態をに設定することで、TPLでそれを実行できるはずですLongRunning

于 2012-04-19T19:16:27.103 に答える
0

これは良い設計ではありませんが、Windowsサービスによってローカルフォルダーにxmlファイルを作成でき、asp.netmvcアプリケーションはWindowsサービスが書き込んだxmlファイルにアクセスします。

于 2012-04-19T19:14:05.857 に答える
0

サーバー上で実行され、更新を処理するWindowsサービス(Webサービスではない)を作成することを検討します。後処理されたデータを、コントローラーが呼び出すデータベースに保存できます。これにより、Webアプリケーションがデータの解析作業から切り離され、サービスでタイマーを使用してWebアプリケーションをよりクリーンに保つことができます。

于 2012-04-19T19:19:14.743 に答える