知識マップ: .NET Generic HostとBackgroundServiceをデスクトップアプリで使う理由
記事「.NET Generic HostとBackgroundServiceをデスクトップアプリで使う理由」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
この記事は、WPFやWinFormsのデスクトップアプリで.NETのGeneric HostとBackgroundServiceを使う理由を整理したものです。Generic Hostは依存性注入やログ、停止処理をまとめて管理する起動の土台であり、BackgroundServiceはHosted Serviceの書きやすい実装として、常駐ループをTask.Runの投げっぱなしではなく管理された寿命に載せます。PeriodicTimerやChannel<T>を使う定期処理・順番付き処理はCancellationTokenを通じてStopAsyncまで停止合図が届き、graceful shutdownの待機上限はHostOptions.ShutdownTimeoutで構成します。致命的エラーで全体を止めたいときはIHostApplicationLifetimeを使うのが正規ルートであり、Environment.Exitで強制終了するとその経路自体が切られてしまいます。
flowchart LR
accTitle: Generic HostとBackgroundServiceの知識マップ
accDescr: デスクトップアプリがGeneric Hostを起動の土台にし、BackgroundServiceがHosted Serviceとして常駐処理をCancellationTokenとShutdownTimeoutで管理されたgraceful shutdownに載せ、Environment.Exitがその経路と両立しないことを示す図。
generic_host["Generic Host"]
backgroundservice["BackgroundService"]
hosted_service["Hosted Service (IHostedService)"]
dependency_injection_dotnet["依存性注入(DI)"]
wpf["WPF"]
windows_forms["Windows Forms"]
periodictimer["PeriodicTimer"]
cancellationtoken_dotnet["CancellationToken(.NET)"]
channel_t["Channel<T>"]
graceful_shutdown["graceful shutdown"]
shutdowntimeout_hostoption["HostOptions.ShutdownTimeout"]
environment_exit["Environment.Exit"]
ihostapplicationlifetime["IHostApplicationLifetime"]
ihostedlifecycleservice["IHostedLifecycleService"]
taskrun_dotnet["Task.Run"]
dotnet[".NET(Core以降)"]
backgroundservice -->|"実装を担う"| hosted_service
generic_host -->|"利用する"| hosted_service
generic_host -->|"利用する"| dependency_injection_dotnet
wpf -.->|"利用する"| generic_host
windows_forms -.->|"利用する"| generic_host
backgroundservice -.->|"利用する"| periodictimer
backgroundservice -->|"利用する"| cancellationtoken_dotnet
backgroundservice -->|"利用する"| channel_t
backgroundservice -->|"利用する"| dependency_injection_dotnet
graceful_shutdown -->|"前提とする"| cancellationtoken_dotnet
generic_host -->|"で構成できる"| shutdowntimeout_hostoption
environment_exit -->|"両立しない"| graceful_shutdown
ihostapplicationlifetime -->|"推奨される対応"| graceful_shutdown
generic_host -.->|"利用する"| ihostedlifecycleservice
taskrun_dotnet -->|"用いるのは非推奨"| hosted_service
backgroundservice -->|"前提とする"| dotnet
generic_host -->|"前提とする"| dotnet
概念間の関係(全17件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- BackgroundServiceはHosted Service (IHostedService)の実装を担います。
- Generic HostはHosted Service (IHostedService)を利用します。
- Generic Hostは依存性注入(DI)を利用します。
- WPFはGeneric Hostを利用します。
- Windows FormsはGeneric Hostを利用します。
- BackgroundServiceはPeriodicTimerを利用します。
- BackgroundServiceはCancellationToken(.NET)を利用します。
- BackgroundServiceはChannel<T>を利用します。
- BackgroundServiceは依存性注入(DI)を利用します。
- graceful shutdownはCancellationToken(.NET)を前提とします。
- Generic HostはHostOptions.ShutdownTimeoutで構成できます。
- Environment.Exitはgraceful shutdownと両立しません。
- IHostApplicationLifetimeはgraceful shutdownに対する本記事の推奨です。
- Generic HostはIHostedLifecycleServiceを利用します。
- Task.RunをHosted Service (IHostedService)に用いることは推奨されません。
- BackgroundServiceは.NET(Core以降)を前提とします。
- Generic Hostは.NET(Core以降)を前提とします。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。