5

50秒ごとにデータベースにデータを書き込む必要があります。これは、バックグラウンドで実行され、静かに仕事をしている Windows サービスに似ています。私の場合、以前に挿入した少量のデータをメモリに保存する必要があるため、開始と停止はオプションではありません。Windows Azure または AWS を使用する場合、これに対する最適なソリューションは何ですか?

ありがとうございました。

4

3 に答える 3

7

Windows Azure では、@Lucifure が提案したように、Web ロールまたは Worker ロール (基本的に Windows 2008 Server R2 または SP2 の両方) を選択し、ある種の時間指定イベントを持つことができます。また、Quartz.net などのスケジューラを実行するか、Windows Azure キューまたはサービス バス キューを利用して、特定の時間にメッセージを表示させることもできます。ただし、VM インスタンスが定期的に再起動されるため (毎月のホスト OS メンテナンスなど)、特定のロール インスタンスに「永久に」タスクを設定することはできません。ロールのシャットダウンでは通知を受け取ります。これらのシャットダウン通知はStopping()またはで処理できますOnStop()。複数のインスタンスがある場合は、スケジューラまたはキューを使用して、イベントが引き続き約 50 秒ごとにトリガーされ、複数のインスタンスにわたって処理されるようにすることができます (ただし、常に 1 つのインスタンスによってのみ)。

メモリ内の情報を保持するための 1 つのアイデアは、その情報をキャッシュに格納することです。次の 2 つの選択肢があります。

  • 分散 (共有) キャッシュ サービス。これはかなり前から存在しています。ロール インスタンスとは独立して実行されます。
  • 2012 年 6 月に導入されたばかりのメモリ内キャッシュ。複数のインスタンスがあると仮定すると、キャッシュはそれらのインスタンス全体に分散されます。既存のロールのメモリ内でキャッシュを実行することもできます。

キャッシングの詳細については、こちらをご覧ください。

このような、Quartz.net と Windows Azure に関する StackOverflow の回答がいくつかあります。

于 2012-06-28T01:20:24.170 に答える
2

Windows Azure では、これを実行できるワーカー ロールを使用できます。while ループのように単純にすることができます。

この記事を紹介してみてください。 http://www.c-sharpcorner.com/uploadfile/40e97e/windows-azu-creating-and-deploying-worker-role/

于 2012-06-27T22:50:32.653 に答える
1

System.Threading.Timer を 50 秒ごとに起動するように設定し、イベントが発生するたびに作業を行うことができます。

于 2012-06-28T00:04:40.250 に答える