.NET(ASP.NET Core)のDIでは、サービスを登録するときにライフタイム(インスタンスの生存期間)を次の3種類から指定します。
1. Transient
services.AddTransient<IMyService, MyService>();
毎回新しいインスタンスが生成される** 方式です。
軽い処理・状態を持たないサービスに向いています。
2. Scoped
services.AddScoped<IMyService, MyService>();
スコープごと(ASP.NET Core ではリクエストごと)に インスタンス生成されます。
1リクエスト内では状態を維持したいけど、リクエスト外では維持する必要がないサービスに使用します。
3. Singleton
services.AddSingleton<IMyService, MyService>();
アプリ全体で 1 つのインスタンスを共有します。
設定管理やキャッシュなど、共有されるべきサービスに向いています。