2

毎日のデータを電子メールに添付する PDF にコンパイルするプロセスが必要です。開発中のアプリケーションで MSSQL を使用して電子メールを送信しましたが、引き続き MSSQL を電子メール プロセッサとして使用したいと考えています。

私の調査では、これは Windows サービスを作成することで実現できることがわかりました。しかし、私はこのプロセスを 1 日に 1 回だけ実行したいので、常にアクティブな Windows サービスを維持するのはやり過ぎのようです。

タスク スケジューラを使用して自作アプリケーションを実行したことはありません。正しい方法で行っていることを確認したいと思います。私が理解しているように、私はしなければなりません...

  1. Visual Studio で新しいプロジェクト (Project X) を作成する
  2. PDF を生成し、MSSQL と対話して電子メールを送信するためのプログラム (プロジェクト X)
  3. (プロジェクト X) を EXE にビルドする
  4. タスク スケジューラを使用して EXE をスケジュールし、必要なスケジュールで実行します。

懸念すべきセキュリティ面はありますか? 私が考えられるのは、MSSQL 接続文字列を暗号化することだけです。もちろん、EXE を Web アプリが存在する Web アクセス可能なディレクトリから除外します。

これはばかげた質問だと思う人もいると思いますので、事前に助け/確認をよろしくお願いします。

4

3 に答える 3

1

あなたが考慮していない唯一のことは、タスク スケジューラが EXE を実行する ID です。

于 2009-01-07T01:05:28.590 に答える
1

Esteban が指摘しているように、これはあなたのアカウントで実行され、マシンにサインオンしたままになりますか? もしそうなら、それはあなたの最大のセキュリティリスクです. スクリーン セーバーを使用して強制的にログイン プロンプトを表示することができます。これは、ログアウトよりも安全であることはほぼ間違いありません。ただし、これが「ベスト プラクティス」と見なされるとは思えません。

1 日に 1 回だけ起動する Windows サービスを構築することを検討します。それらを構築するのはそれほど難しくありませんが、一度実行するとテストするのは非常に難しいため、優れたテストメカニズム (単体テスト可能な dll にコンパイルする独立したクラスを用意することをお勧めします) を用意する必要があります。 . ただし、サービス アプリの "謎" やリソースの使用に関する考えにうんざりしないでください。驚くほど簡単です。リソースに関する限り、完全な Winforms アプリを実行し続けるために、より多くのリソースを費やしています。

于 2009-01-07T01:15:20.117 に答える
0

Windows サービスを構築する場合は、(データベースが存在する) サーバーの起動時に開始するように設定できます。おそらく別のデータベースで、電子メールを送信するための外部追跡システムが必要です。サーバーが起動すると、サービスも起動します。メールが今日送信されたかどうかをサービスがチェックします。そうでない場合は、電子メールを作成し、電子メールを送信してから、ログにマークします (私が想定する db テーブル)。次に、サービスを 24 時間スリープさせてから、(イベントを使用して) 再度チェックさせます。繰り返す。

于 2009-01-07T01:08:06.167 に答える