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