asp.net core2.0依存注入AddTransientとAddScopedの違い
原文住所:http://www.tnblog.net/aojiancc2/article/details/167
asp.Netcoreは主に3つの依存注入方式を提供している.
その中でAddTransientとAddSingletonは比較的に良い違いがあります
AddTransient瞬時モード:毎回新しいインスタンスを取得
AddSingleton単例モード:毎回同じインスタンスを取得
AddTransientとAddScopedの違いはもっと区別しにくい.
まず、この2つの方法は、要求されるたびに同じオブジェクトではないことから、この2つは同じであることがわかります.
しかし、異なるリクエストで得られた結果は異なりますが、同じリクエストで複数回のインスタンステストを取得することができます.
AddTransient注入方式2回のインスタンス を取得する.
瞬時モードは、同じリクエストでも異なるオブジェクトであることがわかります
AddScoped注入方式2回のインスタンス を取得する.
AddScopedは、同じリクエストで複数のオブジェクトを取得して同じオブジェクトを取得していることがわかります.
まとめ:
AddTransient瞬時モード:リクエストごとに新しいインスタンスが取得されます.同じリクエストが複数回取得されても異なるインスタンスになります
AddScoped:リクエストのたびに新しいインスタンスが取得されます.同じリクエストを複数回取得すると同じインスタンスが得られます
AddSingleton単例モード:毎回同じインスタンスを取得
asp.Netcoreは主に3つの依存注入方式を提供している.
その中でAddTransientとAddSingletonは比較的に良い違いがあります
AddTransient瞬時モード:毎回新しいインスタンスを取得
AddSingleton単例モード:毎回同じインスタンスを取得
AddTransientとAddScopedの違いはもっと区別しにくい.
まず、この2つの方法は、要求されるたびに同じオブジェクトではないことから、この2つは同じであることがわかります.
しかし、異なるリクエストで得られた結果は異なりますが、同じリクエストで複数回のインスタンステストを取得することができます.
services.AddTransient();
瞬時モードは、同じリクエストでも異なるオブジェクトであることがわかります
services.AddScoped();
AddScopedは、同じリクエストで複数のオブジェクトを取得して同じオブジェクトを取得していることがわかります.
まとめ:
AddTransient瞬時モード:リクエストごとに新しいインスタンスが取得されます.同じリクエストが複数回取得されても異なるインスタンスになります
AddScoped:リクエストのたびに新しいインスタンスが取得されます.同じリクエストを複数回取得すると同じインスタンスが得られます
AddSingleton単例モード:毎回同じインスタンスを取得