C#によるWindowsサービス入門
Windowsサービスは、.NETエコシステムの強力なツールで、ユーザーの介入なしにバックグラウンドタスクを実行できます。 C#でWindowsサービスを作成するのは複雑に聞こえるかもしれませんが、"Intro to Windows Services in C# - How to create, install, and use a service using Topshelf"というビデオでは、Tim Coreyがステップバイステップで説明しています。
この記事では、各トピックをカバーすることで、わかりやすさと連続性を提供しながら、そのビデオを順を追って説明します。
Windowsサービス入門
Timは、自動化のための強力で見過ごされがちなツールとしてWindowsサービスを紹介します。 これらのアプリケーションはバックグラウンドで動作し、ユーザーインターフェイスを必要とせずにタスクを処理するように設計されています。 一般的な例としては、SQL Server Agent や Hyper-V サービスなどがあります。
ティムは、C#をマスターするための練習の重要性を強調しています。 彼は、実践的な学習のために、ビデオの説明にリンクされているソースコードをダウンロードすることを推奨しています。
コンソール デモ アプリケーションの作成
Visual Studioを使用して、TimはSimpleHeartbeatServiceという新しいコンソール・アプリケーション・プロジェクトを作成します。Windowsサービスプロジェクトテンプレートを使用することもできますが、Timはデバッグを簡単にするためにコンソールでのアプローチを好みます。
ここで重要なのは、どのようなコードをここに書くかではなく、どのようにサービス自体を作成するかということです"とティムは指摘する。
Windowsサービスとは何ですか?
Timは、スタートメニューの検索を使用して、Windowsのサービスタブを開きます("services"と入力してEnterを押すだけです)。 また、リモートデスクトップやMySQLサーバーのように、バックグラウンドで動作するサービスがオペレーティングシステムの重要な機能を実行すると説明しています。
目標は、カスタムコードを使用して、このリストに新しいエントリを作成することです。
Visual Studioプロジェクトの種類:コンソール アプリと Windows サービス
Visual StudioのWindowsサービスプロジェクトを選択したくなるかもしれませんが、Timはデバッグが難しくなると説明しています。 代わりに、コンソールアプリを使用すれば、ローカルで実行してテストできるため、ライブサービスにデバッガをアタッチする必要性が減ります。
サービス型プロジェクトが組み込まれているため、デバッグが難しくなっています。
NuGet経由で Topshelf を追加する
サービスの実装を簡素化するために、Tim氏はNuGet経由でオープンソースのフレームワークであるTopshelfを追加しています。 この人気ライブラリ(数百万ダウンロード)は、定型的なコードなしでWindowsサービスを作成するのに役立ちます。
ステップ
1.リファレンスを右クリック
2.NuGetパッケージの管理を選択します。
3.Topshelfの検索とインストール
サービスロジックの記述
Timは、2つのパブリックメソッドを持つheartbeatクラスを作成します:Start()とStop()です。 コンストラクタの中で、彼は1秒ごとに実行するSystem.Timers.Timerをセットアップしています。
このタイマーの Elapsed イベントは、C:¥temp¥temp¥demos フォルダの .txt ファイルに現在時刻を追加します。 これは、継続的に実行されるバックグラウンドタスクを模倣しています。
このタイマーは1秒ごとにテキストファイルに書き込み、サービスが生きていることを示します。
これは、フォルダのスキャンや文書の印刷など、実際のサービスで長時間実行されるプロセスがどのように動作するかをシミュレートするものです。
トップシェルフによる配線サービス
HostFactory.Run を使用して、Tim は Topshelf をアプリケーションに統合します:
Heartbeatクラスの定義
Start()メソッドとStop()メソッドのマップ
- サービスをLocalSystemとして実行するように設定し、必要な権限を付与する。
また、サービスのメタデータも設定します:
サービス名:HeartbeatService
表示名:ハートビートサービス
- 説明YouTubeの動画でデモ用に使用
コンソール アプリとしてサービスを実行する
インストールする前に、ティムはアプリケーションを実行してテストします。 タイマーはheartbeat.txtにタイムスタンプを正しく追加します。 メモ帳++のモニタリング機能を使って、リアルタイムの更新を示す。
サービスのインストールと検証
Timは、binDebugフォルダから.exeと関連ファイルを恒久的な場所(C:¥demos¥HeartbeatServiceなど)にコピーする。 管理コマンドプロンプトを使用して、次のコマンドを実行する:
SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe startSimpleHeartbeatService.exe install
SimpleHeartbeatService.exe startこれにより、サービスがサービスコントロールマネージャに追加されます。 サービス]タブを再度開き、[更新]をクリックすると、サービスが表示され、実行されています。
サービスをインストールするのは本当に簡単で、サービスを使って何かをするのも本当に簡単です。
アンインストールするには
SimpleHeartbeatService.exe uninstallSimpleHeartbeatService.exe uninstallまとめ:利点と考慮事項
Tim氏は、Topshelfを使ったサービスの作成とインストールは簡単だと振り返ります。 しかし、無限のファイル書き込みはストレージの問題につながる可能性があることを警告しており、適切なログ管理のための良い注意喚起となっている。
実世界でのサービスのアイデア
ティムは、Windowsサービスの実用的なアイデアを共有します:
フォルダのクリーンアップ:ダウンロードから古いファイルを削除する
画像の整理:写真を日付ごとにフォルダ分けする
CSV処理:フォルダを監視し、データベースにCSVを自動インポートする
- 電子メールの自動化:ヘルプデスクのテーブルを監視し、通知を送信する
これらの例では、サービスを使用してバックグラウンドタスクを自動化し、SQL Server、OneDrive、タスクスケジューラなどのツールと統合する方法を示しています。
最終的な考え
Timは最後に、開発者に実験をするよう勧めている。 メモリ、ストレージ、イベントロギングには注意してください。 自動更新、セキュリティ設定、より堅牢なデプロイメントが必要な場合は、さらに設定が必要です。
"ここには多くのパワーがあり、多くのことができます。"
結論
ティム・コーリーのビデオのステップバイステップのデモンストレーションを使用することで、C#でWindowsサービスを作成することが身近で実用的なものになります。 Topshelf を活用することで、コンソールアプリケーションを最小限のセットアップで完全に機能する Windows サービスに変換できます。ログファイルの管理、データベースイベントの処理、自動化の実行など、サービスは、リアルタイムでバックグラウンド for .NET Frameworkまたは.NET Coreアプリケーションを構築するための強力でスケーラブルな方法を提供します。
このチュートリアルは、サービスを理解し、作成し、効率的にインストールするための完全なパスとして使用してください。 十分にテストし、インストーラまたはコマンドプロンプトを常に管理者として実行することを忘れないでください。



