この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 36245|答える: 1

[.NET Core] ASP.NET Core依存注入は付属するIOCコンテナを使用します

[リンクをコピー]
掲載地 2019/05/07 13:55:10 | | | |
ASP.NET Core依存注入は付属するIOCコンテナを使用します
https://www.itsvse.com/thread-7562-1-1.html
(出典:Architect_Programmer)

ASP.NET CoreはAutofacを使ってIOC注入を実装しています
https://www.itsvse.com/thread-7563-1-1.html
(出典:Architect_Programmer)

ASP.NET CoreはAutofacを使ってAOP傍受を実装しています
https://www.itsvse.com/thread-7566-1-1.html
(出典:Architect_Programmer)

新しい ASP.NET コアでは、多数の依存性注入がコードの作成に使われています。

例えば、スタートアップの授業では以下のことがわかります:

AddMvc AddDbContextには、以前ディレクトリツアーで使っていたAddDirectoryBrowserが含まれています:

これらはすべて良質なサービスを提供するフレームワークであり、私たちはそれらを注入することで直接活用できます。

制御の反転(IoC)は、オブジェクト指向プログラミングにおける設計原則であり、コンピュータコード間の結合を減らすために用いられます。 最も一般的な方法は依存性注入(DI)と呼ばれ、「依存性検索」と呼ばれる手法もあります。 反転を制御することで、オブジェクトが作成されると、システム内のすべてのオブジェクトを制御する外部のエンティティが、依存するオブジェクトへの参照をそのオブジェクトに渡します。 また、依存関係がオブジェクトに注入されているとも言えます。

iocを使うには、StartupクラスがMicrosoft.Extensions.DependencyInjection(ps)を参照する必要があります。これはすでにかなり単純です: マイクロソフト... 拡大... 依存注入 - - ,)

サービスのライフサイクルを注入する

Microsoftは自己注入サービスに対して3つのライフサイクルを提供しています。

過渡性

リクエストされるたびに作成される即時のライフサイクルサービスです。 このライフサイクルは軽量でステートレスなサービスに最適です。

スコープ付き

同じ範囲内では、サービスはリクエストごとに一度だけ作成されます。

シングルトン(のみ)

グローバルは一度だけ作成され、最初にリクエストされた時だけで、その後は必ず使われます。

これら三つのライフサイクルをどのように活用していますか? 注入時に直接異なる方法を使うことができます。コードは以下の通りです:


これら3つのライフサイクルの特定の世代を検証しましょう

異なる名前と3つの異なるクラスのインターフェースを書き、以下のように実装します。

各実装クラスのコンストラクタでは新しいGUIDを生成し、クラスがコンストラクタを再実行したかどうかを判断します。

コントローラーにサービスを注入する

注入には一般的に3つの方法があります:コンストラクタ注入、メソッド注入、属性注入です。 Microsoft独自のIOCコンテナはデフォルトでコンストラクタ注入を使用しています(属性注入はサポートされていませんしかし、サードパーティ製のコンテナ代替品で実現可能です)

ページコードを見る:

プロジェクトを実行し、以下の2つの異なるブラウザからアクセスできます。



瞬時ライフサイクルで2回生成されるGUIDは一貫性がなく、対象が同一でないことを示しました。

しかし、スコープのライフサイクルは同じです。なぜなら、同じスコープの下で同じブラウザで2回使われるサービスのGUIDが同じであり、同じオブジェクトが使われていることを示しているからです。

シングルトンの場合、2つの異なるブラウザが常に同じGUIDにアクセスし、同じオブジェクトが呼び出されていることを示します。

(終わり)






先の:.NET Core Entityは、データベースをリンクするためにEntity Framework Coreを使用します
次に:ASP.NET CoreはAutofacを使ってIOC注入を実装しています
 地主| 掲載地 2022/03/09 11:00:35 |
ASP.NET Coreの内蔵DIコンテナ内のサービスを置き換える

コード:





免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com