2

VS 2008(C#)を使用してWebサイトを開発しています。私の現在の使命は、次のタスクを実行するモジュールを開発することです。

  • 15分ごとに、プロセスはデータベースと通信して、登録によってデータベースの「ユーザー」テーブルに新しいユーザーが追加されたかどうかを確認する必要があります。
  • 新しいエントリが見つかった場合は、そのエントリをxmlファイルに追加する必要があります(たとえばNewUsers18Jan2009.xml)。

これを達成するために、次のうちどれが最も適切ですか?

  1. スレッド
  2. Windowsサービス
  3. 他の

これを実証するために利用できるサンプルはありますか?

4

10 に答える 10

3

このタスクをWebサイトから分離します。すべてのWebサイトはWebサーバーを経由します。ロジックをクラスライブラリに配置し(将来、オンデマンドチェックを行う必要がある場合に使用できるように)、このクラスをコンソールアプリケーションで使用します。Windowsの「スケジュールされたタスク」機能を使用して、このコンソールアプリを15分ごとに実行するように設定します。これは、IISを介してスケジュールされたタスクを実行するよりもはるかに優れたソリューションです。

于 2009-08-14T13:21:32.470 に答える
3

タスクにUI部分があるようには思えません。その場合は、Windowsサービスまたはスケジュールされたアプリケーションのいずれかを使用してください。リモートで制御する方が簡単なので、サービスを利用します。

ここにWebサイトへの接続が表示されません...

于 2009-08-14T13:21:40.737 に答える
2

なぜ世界で管理者は15分ごとにpingを実行する必要があるのでしょうか。貧しい管理者!

ユーザーテーブルの各エントリにタイムスタンプを付けて、管理者が必要なときにいつでもデータをクエリできるようにするクイックレポートを作成します。

于 2009-08-14T13:41:58.597 に答える
1

あなたのアプローチは間違っていると思います。次の2つのいずれかを実行する必要があります。

  • ユーザー作成の最後のステップとして、XMLファイルにユーザーを追加します。
  • 要求されたときにオンデマンドでXMLファイルを生成します。これにより、オーバーヘッドがほとんどないリアルタイムの情報が得られます。
于 2009-08-14T13:22:43.233 に答える
1

Windowsサービスは、優れたソリューションを提供します。または、SQL Serverを使用している場合は、SQLAgentジョブからこの種の処理を実行できます。

コードをWebアプリケーションの「一部」にしたい場合は、URLが呼び出されるたびにタスクを実行するハートビートページからいつでもロジックを起動できます。その後、サービスまたはエージェントジョブからURLをポーリングできます。

于 2009-08-14T13:23:04.793 に答える
1

最も簡単なアプローチは、Application_StartのアプリでSystem.Threading.Timerを作成し、それが収集されないように静的フィールドに配置することです。そうすれば、外部プロセスを必要とせずに、Webアプリでデータベースをポーリングできます。もちろん、アプリがダウンするとタイマーもダウンします。ポーリングロジックの場合は、最後のuserIdを保持し(増分ポリシーがある場合)、WHERE id> lastIdをフィルタリングして、新しく追加されたユーザーを確認します。

于 2009-08-14T13:42:04.213 に答える
0

最後に「新規ユーザーのエクスポート」を行った時刻を格納する新しいテーブル(またはテキストファイル)を作成するか、最後のエクスポートファイルの変更日/作成日を検索します。スクリプトがDBにヒットしたら、SQLコマンドを実行して、最後のエクスポート時間以降に作成されたすべてのユーザーを取得します。ユーザーごとに新しいXMLを吐き出します。

このスクリプトを、Windowsのスケジュールされたタスク/cronジョブ/データベーストリガーとして実行するように設定します。

于 2009-08-14T13:21:45.857 に答える
0

特定の日のすべてのユーザーを(投稿に従って)単一のXMLファイルに追加しているように見えるのに、なぜ15分ごとにこれを行う必要があるのでしょうか。真夜中過ぎに一度これを行うだけで十分ではないでしょうか?

これを行う場合、できればWindowsサービス(15分ごとに実行する必要がある場合)または0:15時間に1回実行するようにスケジュールされているコマンドラインアプリで、「サインアップ」を確認する必要があります。ユーザーの日付と、前日にサインアップしたものがある場合は、それらをリストに追加し、テーブルの処理の最後にそのリストをXMLファイルにエクスポートします。

マーク

于 2009-08-14T13:29:12.853 に答える
0

この機能を実行するためのWindowsサービスの作成にも投票しましたが、最も簡単な方法は、ユーザーが挿入されたときにxmlファイルを作成するトリガーを「ユーザー」テーブルに配置することです。 。

于 2009-08-14T13:42:57.287 に答える
0

2番目のチャックの答え-XMLクエリを使用してデータベースからこのデータを取得し、直接送信することができます。システム上でファイルを作成する必要はほとんどありません。

于 2009-08-14T14:03:17.697 に答える