asp.net core2.0依存注入AddTransientとAddScopedの違い

1847 ワード

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

       asp.net core2.0 依赖注入 AddTransient与AddScoped的区别_第1张图片
    瞬時モードは、同じリクエストでも異なるオブジェクトであることがわかります
      
     
  • AddScoped注入方式2回のインスタンス
  • を取得する.
    services.AddScoped();

    AddScopedは、同じリクエストで複数のオブジェクトを取得して同じオブジェクトを取得していることがわかります.

     
    まとめ:
    AddTransient瞬時モード:リクエストごとに新しいインスタンスが取得されます.同じリクエストが複数回取得されても異なるインスタンスになります
    AddScoped:リクエストのたびに新しいインスタンスが取得されます.同じリクエストを複数回取得すると同じインスタンスが得られます
    AddSingleton単例モード:毎回同じインスタンスを取得