データベースにタスクテーブルがあります。このテーブルからデータを読み取り、タスクを実行したいと思います。Windowsサービスとして実行するかコンソールアプリケーションとして実行するかはどちらが良いですか。これが実行されるサーバーはシャットダウンされません
6 に答える
ほとんどの場合、Windowsサービスを使用することをお勧めします。
利点:
- プロセスを開始するユーザー(およびこのユーザーアカウントに関連付けられた権限)を制御できます
- 自動的に開始されるプロセスは、サービスを実行するために、ユーザーがログに記録するのではなく、デスクトップがオンになっている必要があることを意味します
- 失敗に関するポリシーを定義できます(失敗した場合は、特定のプログラムをn回実行して再起動してください)
- 依存関係を定義できます(他のサービスに依存している場合)
- スクリプトを非表示のウィンドウでラップできます
- スクリプトを簡単に開始/停止/再開できます(
net start <scriptname>
)
他の人が述べているように、実行中のコンソールアプリはオプションではありません。
タスクをx分ごとに実行するだけの場合、最も簡単なオプションは、コンソールアプリケーションを使用してスケジュールされたタスクです。
Windowsサービスには利点がありますが、実装と展開は少し複雑です。ただし、アプリを「常にオン」にする必要がある場合(たとえば、外部トリガーに反応する必要がある場合、メッセージキューをリッスンする必要がある場合など)、Windowsサービスが唯一のオプションです。他の人が言っているように、サービスインフラストラクチャは、より多くの管理機能、イベントログとの組み込み統合、再起動およびフェイルオーバーオプションも提供します...
ログインユーザーを必要としないため、Windowsサービス。
私は言うだろう; Windowsサービス。
その場合(とりわけ)、ユーザーがログインする必要はありません。何らかの理由でシャットダウンし、システム全体で広範な権限を持っている場合は、自動的に再起動するように構成できます。
一般的にWindowsサービス。Windowsサービスを自動的に開始できるときにサーバーが再起動した場合は、コンソールアプリを再起動する必要があります。
https://github.com/thedavejay/Self-Installing-Windows-Serviceをご覧ください。
これにより、コンソールアプリケーションとしてデバッグし、Windowsサービスとしてインストールできます。