この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
プログラミング
›
.Net/C#
›
オートファックコンポーネントのインスタンス範囲
眺める:
20252
|
答える:
1
[出典]
オートファックコンポーネントのインスタンス範囲
[リンクをコピー]
クズども
掲載地 2018/09/14 13:22:21
|
|
|
|
インスタンススコープは、リクエスト間でのサービスの共有方法を決定します。
元の住所:
http://docs.autofac.org/en/latest/lifetime/instance-scope.html
依存関係ごとに1つのインスタンス
このオプションでは、サービスが要求されるたびに新しいインスタンスが返されます。 InstancePerDependency()を使ってください。 これがデフォルトの選択肢です。 以下のコード、2行目と3行目は同値です。
ログインが見えます。
以下のコードは各ループごとに新しいインスタンスを生成し、合計100インスタンスとなります。
ログインが見えます。
単一インスタンス
このオプションを使って、ルートスコープまたはネストスコープのいずれかでサービスを要求し、両方とも同じインスタンスを返します。 SingleInstance() を使って指定してください。
ログインが見えます。
以下のコード、w1とw2は常に同じオブジェクトであり、ワーカークラスは100ループのうちに1つのインスタンスのみです。
ログインが見えます。
ライフサイクルスコープごとに1つのインスタンス
このオプションを使って特定のILifetimeScopeでサービスを要求し、1つのインスタンスのみを返します。 InstancePerLifetimeScope()を使ってください。 次のコードでは、スコープ1の100回のw1は同じオブジェクトであり、スコープ2の100回のw2は同じオブジェクトですが、w1とw2は同じオブジェクトではありません。
ログインが見えます。
マッチングライフサイクル範囲ごとに1つのインスタンス
上記の[ライフサイクルスコープごとに1インスタンス]に似ていますが、よりコントロールが強化されています。 このオプションを使って、ILifetimeScopeオブジェクトにタグを付与できるようにします。 タッグマッチの範囲内には1つのインスタンスしかありません。 InstancePerMatchingLifetimeScope()メソッドを使ってください。
ログインが見えます。
以下のコードでは、w1とw2は同じで、w3とw4は同じですが、w1とw3は異なります。
ログインが見えます。
解析時に適切なマークアップを提供しなければならず、以下のコードは例外を投げ出します。
ログインが見えます。
リクエストごとに1つのインスタンス
一部のアプリケーションは、MVCやWebFormアプリケーションのように自然にRequestセマンティクス ASP.NET 持っています。 [1インスタンス1リクエスト]は[1インスタンスのマッチングライフサイクル範囲]を基に、スコープマーカー、登録関数、共通型統合を提供することで実装されています。 基本的には、[マッチングするライフサイクル範囲ごとに1つのインスタンス]です。
ログインが見えます。
ASP.NET Coreは、リクエストごとに1つのインスタンスではなく、ライフサイクルスコープごとに1つのインスタンスを使用します。
所有されている1つあたり1つのインスタンス
所有されている<T>暗黙の関連付けタイプは、入れ子状のライフサイクル範囲を作成します。 インスタンスごとに所有された登録を使えば、依存関係を所有されたインスタンスに限定できます。
ログインが見えます。
この場合、ServiceForHandlerサービスはMessageHandlerインスタンスの範囲内に限定されます。
ログインが見えます。
ねじの幅
AutofacはスレッドAのオブジェクトがスレッドBの依存関係を満たさないように強制できます。
ログインが見えます。
そしてそれぞれが自分の生涯範囲を作ればいいのです
ログインが見えます。
重要:マルチスレッドのシナリオでは、親スコープをクリーンアップしないように注意してください。
そうでなければ、派生スレッド内のサブスコープはサービスを解決できません。
各スレッドはMyThreadScopedComponentのインスタンスを持ち、これは基本的にライフサイクルスコープ付きのシングルトンです。 スコープ内のインスタンスは外部から提供されないため、スレッド間でコンポーネントを分離しやすくなります。
ILifetimeScopeパラメータを追加することで、親範囲をスレッドを生成するコードに注入でき、Autofacが自動的に現在の範囲を注入し、それを使ってネストされたスコープを作成できます。
ログインが見えます。
さらに制御したい場合は、[1インスタンスごとに一致するライフサイクル範囲]を使って、スレッドスコープのコンポーネントを内部ライフサイクルスコープに関連付けることができます。図に示す通りです:
図の「コンテキスト」は、BeginLifetimeScopeメソッドによって作成されたライフサイクル範囲です。
先の:
フロントエンドのマウスクリック効果:自由、民主主義、繁栄
次に:
{"error_msg": "IAM認証に失敗"}
関連記事
•
オートファック制御範囲と寿命
•
ASP.NET CoreはAutofac属性でNullReferenceExceptionを注入します
•
MVCでautofacを使って自動登録を実装します
•
ASP.NET CoreはAutofacを使ってAOP傍受を実装しています
•
ASP.NET Core ILogger ログの利用チュートリアル
•
ASP.NET CoreはAutofacを使ってIOC注入を実装しています
•
ASP.NET Core依存注入は付属するIOCコンテナを使用します
•
IoC効率的なオートファック
閲覧したセクション
Windows/Linux
リソースの共有
ジャワ
レジャー灌漑
C/C++
HTML/CSS/JavaScript
ウェブサイト構築
技術チャット
Microsoft Access/SQLite
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com