知識マップ: Windowsサービスの作り方と運用 ── タスクスケジューラとの使い分けからBackgroundServiceのサービス化まで

記事「Windowsサービスの作り方と運用 ── タスクスケジューラとの使い分けからBackgroundServiceのサービス化まで」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

Windowsサービスはサービス制御マネージャー(SCM)がセッション0で管理する常駐プロセスで、直接UIを出せないためUIが必要な場合はプロセス間通信で別プロセスに分離する。.NETではGeneric Host上に構築されたBackgroundServiceをAddWindowsServiceでSCM対応させ、開始の種類・実行アカウント・回復オプション・停止のタイムアウトをsc.exeでの登録時に設計する。既定のLocalSystemは権限が強すぎるため避け、仮想アカウントかgMSAを選ぶのが実務上の要点となる。BackgroundServiceの未処理例外は既定でホストを正常停止させるためSCMの回復オプションが働かず、再起動させたい失敗は非0の終了コードで明示的に落とす必要がある。

Windowsサービスの作り方と運用の知識マップWindowsサービスがSCMとセッション0の上でBackgroundServiceとGeneric Hostにより実装され、開始の種類・実行アカウント・回復オプション・停止処理を登録時に設計することを示す図利用する利用する実装を担う前提とする前提とする利用するで構成できる前提とするで構成できるで構成できる両立しない原因になり得る用いるのは非推奨推奨される対応推奨される対応で構成できるで構成できる前提とするで構成できるWindowsサービスBackgroundServiceGeneric Host.NET(Core以降)AddWindowsService(UseWindowsService)サービス制御マネージャー(SCM)セッション0プロセス間通信(IPC)名前付きパイプsc.exe create管理者権限開始の種類(スタートアップの種類)回復オプション(sc.exe failure)BackgroundServiceExceptionBehavior.StopHostLocalSystemアカウント仮想アカウントgMSA(group Managed Service Account)ShutdownTimeout(HostOptions)EventLogロガープロバイダー

概念間の関係(全19件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Windowsサービス
ユーザーのサインインと無関係にバックグラウンドで動くWindowsのプロセス。
BackgroundService
IHostedServiceの書きやすい実装補助となる抽象クラスで、長く走る本体をExecuteAsyncに書ける。
AddWindowsService(UseWindowsService)
Generic Hostのライフタイムを、Windowsサービスとして起動された場合にSCMと会話する実装へ切り替える拡張メソッド。
プロセス間通信(IPC)
別プロセスとデータや合図をやり取りする仕組みの総称。
sc.exe create
サービスをサービス制御マネージャーへ新規登録するコマンドラインツールのサブコマンド。
BackgroundServiceExceptionBehavior.StopHost
.NET 6以降の既定動作で、BackgroundServiceのExecuteAsyncから漏れた未処理例外をログに記録したうえでホストを正常停止させる設定。
LocalSystemアカウント
サービスの実行アカウントの1つ。ローカルでは広範な特権を持つ一方、ネットワーク上ではコンピューターの資格情報としてリモートサーバーに認証される。
仮想アカウント
パスワード管理が不要で、コンピューターアカウントの資格情報でネットワークにアクセスしながらサービス単位でACLを付与できるサービス実行アカウント。
gMSA(group Managed Service Account)
パスワードの自動生成・自動更新とSPN管理の簡素化を提供するActive Directoryドメインのサービスアカウント。ドメインコントローラー側のKDSルートキーの準備を前提とする。
Generic Host
構成・DI・ロギングをまとめて面倒を見る.NETの土台。Host.CreateApplicationBuilderを使うと既定の構成プロバイダーの階層が組み立てられる。
EventLogロガープロバイダー
Host.CreateApplicationBuilderがWindows上で自動追加する、既定でWarning以上のログをWindowsイベントログへ書き込むロギングプロバイダー。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。