0

私はデータ最適化プロジェクトを開発しています。ユーザーからタスクを受け取るためのクライアント側 Web アプリがあります。タスクが、通常のシステムでは簡単に実行できない重い計算であるとしましょう。プログラムは、大量のデータを計算するのに時間がかかります。私がやろうとしているのは、Web アプリケーションから計算命令を受け取り、サーバー側で Windows サービスを使用して、新しいタスクが実行されるのをリッスンすることです。

Tasks テーブルに挿入されているデータをリッスンし、それらの日付の時刻に基づいて計算機を実行するサービスを希望しています。もちろん、いくつかのマルチスレッドに対処する必要があります。また、プログラムがビジー状態の場合、他のプロセスは待機する必要があります。

また、現在処理中の注文と、サービスがビジーかアイドルかを確認するために、アプリケーション用の小さな GUI を用意することも気にしません。

最初に考えたのは、データベースに SQL Server ジョブを追加して、テーブルを頻繁にクエリし、日付に基づいてアプリケーションを実行することでした。しかし、それは私にとって良い解決策のようには見えません。私が欲しいのは、データベースに新しいデータがあると認識し、何をすべきかを決定する、すぐに使える機敏なサービスです。

ここでは、特に Windows サービスについては主張しません。だから、どんな良いアイデアでも大歓迎です。

4

1 に答える 1

0

私はPowershellで似たようなことをしました。私が持っているもの:

  • リクエストが集まる「キュー」テーブル
  • プロシージャを呼び出すクライアントからのリクエスト
  • 「キュー履歴」テーブル - リクエストはすでに「処理済み」で、「キュー」から「queue_history」に移動します (削除トリガー)
  • Powershell ループ読み取りキュー テーブル

  • キューからのリクエストは、start-jobコマンドを介して個別に開始されます。これらは実際には個別の Powershell インスタンスです (私のタスクは主に外部の exe 呼び出しですが、ストアド プロシージャの呼び出しにも役立つと思います)。

  • PowerShell ループは、彼の「ハートビート」もテーブルに報告します。
  • STOP フラグのテーブルとファイルの存在も監視するので、停止できます。
于 2013-11-11T17:10:36.367 に答える