50秒ごとにデータをデータベースに書き込む必要があります。これはバックグラウンドで実行されているWindowsサービスと似ています。私が以前に挿入した少量のデータをメモリに保存する必要があるため、私の場合は起動と停止はオプションではありません。 Windows AzureまたはAWSを使用している場合、これに最適なソリューションは何ですか?Windows Azureで長期間(または永遠に)タスクを実行する
ありがとうございます。
50秒ごとにデータをデータベースに書き込む必要があります。これはバックグラウンドで実行されているWindowsサービスと似ています。私が以前に挿入した少量のデータをメモリに保存する必要があるため、私の場合は起動と停止はオプションではありません。 Windows AzureまたはAWSを使用している場合、これに最適なソリューションは何ですか?Windows Azureで長期間(または永遠に)タスクを実行する
ありがとうございます。
Windows Azureでは、@Lucifureが示唆しているように、WebまたはWorkerロール(基本的にWindows 2008 Server R2またはSP2のいずれか)を選択でき、何らかのタイプのタイムドイベントがあります。また、Quartz.netのようなスケジューラを実行したり、Windows Azureキューやサービスバスキューを利用して特定の時刻にメッセージを表示することもできます。ただし、定期的にVMインスタンスが再起動される(たとえば、毎月のホストOSの保守の場合など)、所与のロールインスタンスに「永遠の」タスクを持たせることはできません。ロールシャットダウンでは、通知を受け取り、Stopping()
またはOnStop()
にこれらのシャットダウン通知を処理できます。複数のインスタンスがある場合は、スケジューラーまたはキューを使用して、50秒ごとにイベントがトリガーされ、複数のインスタンス間で処理されるようにすることができます(ただし、常に1つのインスタンスのみで処理されます)。
メモリ内の情報を保持するには、その情報をキャッシュに格納することをお勧めします。次の2つの選択肢があります。
キャッシングに関する詳細は、hereです。
Quartz.netとWindows Azureに関するいくつかのStackOverflowの回答があります(this oneなど)。
Windows Azureでは、これを実行できるワーカーロールを使用できます。それはwhileループのように単純にすることができます。
この記事で紹介してください。 http://www.c-sharpcorner.com/uploadfile/40e97e/windows-azu-creating-and-deploying-worker-role/
System.Threading.Timerを設定して50秒ごとに起動し、イベントが発生するたびに作業を行うことができます。