2

ユーザーが単純なタスクや仕事を管理できるようにする Web アプリケーションを構築しようとしています。その一環として、ユーザーにタスクのリマインダー メールを毎日送信したいと考えています。ただし、システム内の各ユーザーに、リマインダーを受け取る時刻を指定してもらいたいと思います。たとえば、あるユーザーは電子メールを午前 8 時に受信するように指定し、別のユーザーは電子メールを午後 7 時に受信するように指定できます。.Net を使用して、この「リマインダー」サービスを設計および構築する最良の方法は何ですか? また、これに対する将来の段階として、リマインダーを SMS テキストやその他の形式の通知に拡張したいと考えています。

任意のガイダンスをいただければ幸いです。

4

3 に答える 3

1

あなたの質問は少し広いですが、Windows で繰り返し発生するタスクを処理するには、2 つの一般的な方法があります。

  • サービスを作成し、定期的にタスクをチェックするように設計します。クォンタムごとにデータベースをポーリングし、その時点で予定されているリマインダーを実行する (完了したものをマークする) ことができます。
  • Windows のスケジュールされたタスク (Microsoft の cron に相当) としてプログラムを実行します。1 時間ごとに実行し、上記のようにデータベースをチェックします。

.NET から電子メールを送信する方法を知っていることを前提としています。これは非常に簡単で、ほとんどの通信事業者はメールから SMS へのゲートウェイを備えています。

于 2010-02-26T02:24:58.153 に答える
1

次の 2 つの方法で実行できると思います。

  • バックグラウンドで実行されている Windows サービスは、DB をポーリングし、現時点でアイテムを検索し、何も見つからない場合はスリープし、ループします。

    これで十分ですが、30 秒で処理するアイテムが突然 1,000 個になると、処理に時間がかかりすぎるため、うまくスケーリングできない可能性があります。MSMQ を念頭に置いてビルドすることで、これを回避できます。これにより、さまざまなマシンへの配布が可能になります。

  • 同様の Windows サービスですが、新しい DB エントリが作成されるたびに起動されるある種のパルス/待機システムを介して対話可能にします。その後、合法的にスリープできますが、一種の「もろい」です。

私はおそらく最初のアプローチで行くでしょう。

于 2010-02-26T02:26:23.460 に答える
0

常に実行され、実行するタスクを 1 分に 1 回チェックするサービスを作成します。その後、必要なアクションを実行できます。ユーザーが使用する Web サイトを作成して、サービスも読み取るデータベースにアクセスできます。もう少し凝った WCF インターフェイスをサービスに追加したい場合は、Web サイトでサービスにアクセスし、必要なリマインダーをデータベースに保存します。

于 2010-02-26T02:24:39.470 に答える