C#
 Computer >> コンピューター >  >> プログラミング >> C#

AddSingleton vs AddScoped vs Add Transient C#Asp.net Coreとは何ですか?


Startup.csに依存関係を登録する方法は3つあります。つまり、AddSingleton、AddScoped、AddTransientです。

シングルトンを追加

タイプをシングルトンとして登録すると、アプリケーション全体およびすべてのリクエストで使用できるインスタンスは1つだけになります。

これは、静的オブジェクトを持つことに似ています。

インスタンスは最初のリクエスト用に作成され、同じものがアプリケーション全体および後続の各リクエストで利用できます。

public void ConfigureServices(IServiceCollection services){
   services.AddSingleton<ILog,Logger>()
}

スコープを追加

タイプをスコープとして登録すると、リクエストごとにアプリケーション全体で1つのインスタンスを使用できます。新しいリクエストが届くと、新しいインスタンスが作成されます。 Add scopedは、リクエストごとに1つのオブジェクトを使用できることを指定します。

public void ConfigureServices(IServiceCollection services){
   services.AddScoped<ILog,Logger>()
}

トランジェントを追加

タイプをTransientとして登録すると、新しいインスタンスが作成されるたびに。 Transientは、すべてのサービス/コントローラー、およびすべてのリクエストとすべてのユーザーに対して新しいインスタンスを作成します。

public void ConfigureServices(IServiceCollection services){
   services.AddTransient<ILog,Logger>()
}


パラメータ シングルトンを追加 スコープを追加 トランジェントを追加
インスタンス 同じリクエスト/各ユーザー。 リクエストごとに1つ。 いつまでも違う。
廃棄 アプリのシャットダウン リクエストの終了 リクエストの終了
で使用 シングルトンの実装が必要な場合。 ユーザーごとに動作が異なるアプリケーション。 軽量でステートレスなサービス。

  1. ASP .Net MVC C#でのNonActionAttributeの重要性は何ですか?

    NonAction 属性は、コントローラーにパブリックメソッドが必要であるが、アクションメソッドとして扱いたくない場合に使用されます。アクションメソッドは、URLを使用して呼び出すことができるコントローラーのパブリックメソッドです。したがって、デフォルトでは、コントローラーにパブリックメソッドがある場合、URLリクエストを使用して呼び出すことができます。コントローラのパブリックメソッドへのアクセスを制限するには、NonAction属性を使用できます。 ここで、HomeControllerに2つのパブリックメソッドMyMethod1とMyMethod2があると考えてみましょう。 。 コントロ

  2. C#ASP.NET WebAPIのさまざまな種類のフィルターは何ですか?

    フィルタは、WebApiFrameworkリク​​エスト処理のさまざまなレベルで追加のロジックを挿入するために使用されます。フィルタは、横断的関心事(ロギング、承認、およびキャッシング)の方法を提供します。フィルタは、宣言的またはプログラム的な方法でアクションメソッドまたはコントローラに適用できます。以下は、Web API C#のフィルターの種類です。 認証フィルター − 認証フィルターは、ユーザーの詳細を認証するのに役立ちます。認証フィルターでは、ユーザーの信頼性をチェックするためのロジックを記述します。 認証フィルター − 承認フィルターは、ユーザーアクセスのチェックを担当しま