IRONSOFTWAREHOME

C#によるWindowsサービス入門

C# での Windows サービス入門 - Topshelf を使用してサービスを作成、インストール、使用する方法

Tim Corey

31 分 20 秒

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 start

これにより、サービスがサービスコントロールマネージャに追加されます。 サービス]タブを再度開き、[更新]をクリックすると、サービスが表示され、実行されています。

サービスをインストールするのは本当に簡単で、サービスを使って何かをするのも本当に簡単です。

アンインストールするには

SimpleHeartbeatService.exe uninstall

まとめ:利点と考慮事項

Tim氏は、Topshelfを使ったサービスの作成とインストールは簡単だと振り返ります。 しかし、無限のファイル書き込みはストレージの問題につながる可能性があることを警告しており、適切なログ管理のための良い注意喚起となっている。

実世界でのサービスのアイデア

ティムは、Windowsサービスの実用的なアイデアを共有します:

  • フォルダのクリーンアップ:ダウンロードから古いファイルを削除する

  • 画像の整理:写真を日付ごとにフォルダ分けする

  • CSV処理:フォルダを監視し、データベースにCSVを自動インポートする

  • 電子メールの自動化:ヘルプデスクのテーブルを監視し、通知を送信する

これらの例では、サービスを使用してバックグラウンドタスクを自動化し、SQL Server、OneDrive、タスクスケジューラなどのツールと統合する方法を示しています。

最終的な考え

Timは最後に、開発者に実験をするよう勧めている。 メモリ、ストレージ、イベントロギングには注意してください。 自動更新、セキュリティ設定、またはより堅牢な展開が必要な場合には、さらに設定が必要です。

"ここには多くのパワーがあり、多くのことができます。"

結論

ティム・コーリーのビデオのステップバイステップのデモンストレーションを使用することで、C#でWindowsサービスを作成することが身近で実用的なものになります。 Topshelf を活用することで、コンソールアプリケーションを最小限のセットアップで完全に機能する Windows サービスに変換できます。ログファイルの管理、データベースイベントの処理、自動化の実行など、サービスは、リアルタイムでバックグラウンド for .NET Frameworkまたは.NET Coreアプリケーションを構築するための強力でスケーラブルな方法を提供します。

このチュートリアルは、サービスを理解し、作成し、効率的にインストールするための完全なパスとして使用してください。 十分にテストし、インストーラまたはコマンドプロンプトを常に管理者として実行することを忘れないでください。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。