IOCとDIのASP.NETコアの理解と利用について

IOCとDIといえば、使用ASP.NETコア人々は常にそれを感じるか、以前、彼らはこれらの二つのことを理解するために、過去にしようとしていますこれら二つの概念、には見知らぬ世界ではありませんが、常に理解しにくい少し感じましたぼやけたので、無料の今日を活用して、我々は、記録された二つの概念ストローク明確な知識と学習プロセスに行ってきました。

 、IOCとDI理解

1.1 IOCは何ですか?

デザインではない技術である制御、すなわち、制御の逆転、のIOC反転。その後は使用IOCがない前に、私たちは、一般的に新しいを通じてオブジェクトを作成するためにインスタンス化。我々がコントロールオブジェクトを作成するには、IOCを使用した後しかし、その後プロセスは制御の反転として理解することができ、外部に内部変換されます。

1.2 DI(依存性注入)とは何ですか?

オブジェクト自体構築されたオブジェクトを意味する依存性の注入のフルネームは、注射の方法により作成されます。その画像は、その動的なコンポーネントに依存性の容器に注入されます。

1.3 IOCおよびDI接触?

IOCは、デザインで、DIは、このデザインコンセプトの実現です。理解IOCとDIの鍵は、次のとおりです。「何かを注入し、注入され頼りに、なぜ誰依存性、、。」
●誰に依存誰:もちろん、IoCコンテナに依存するアプリケーションです。
●なぜに依存しています。アプリケーションは、オブジェクトを必要な外部リソースを提供するために、IoCコンテナを必要とする;
●誰注入を:明らかにIoCコンテナは、アプリケーションオブジェクトに注入され、アプリケーションに依存するオブジェクトを、
●は何かを注入:中に注入されます(オブジェクト、リソース、定数データを含む)外部リソースオブジェクトのために必要

 1.4なぜ逆にする必要がありますか?

コードにビジネスの変化を変更するまでの時間を最小にするために、問題を引き起こしました。

DIの利益の1.5を使用しますか?

1)、手順の間の疎結合をできるよう依存助長多重化機能を低下させます。
2)プログラムの全体的な構造は、ユニットテストをより柔軟かつ助長することができます。

1.6 IOC共通のフレームワーク。

Microsoft自身のDI、Autofac、ユニティ

二、.NETのコア自体DI使用

2.1.NETコア自体DI

ASP.NETコア自体は軽量IOCコンテナを統合した後、以下のように、開発者は、唯一の共通メソッドのライフサイクルに対応しConfigureServices Startup.csの結合方法でメソッドを使用し、インターフェイスを定義する必要があります

クラスstart.upに登録されている実施例ConfigureServices方法

services.AddTransient <IApplicationService、ApplicationService> ();
services.AddSingleton <IApplicationService、ApplicationService> ();
services.AddScoped <IApplicationService、ApplicationService>();

これらの三つの方法は、私たちの例に登録されている、ライフサイクルは、ちょうど同じではありません。

AddSingleton:アプリケーション全体のライフサイクルの中で一つだけのインスタンス、静的クラスと同等のものを作成します。

AddScoped:同じスコープの初期化の唯一のインスタンスは、(httpリクエストと範囲内で、インスタンスを1つだけ作成する要求すべてのレベルであろう)として理解することができます。

AddTransient:1がそれぞれの新しいインスタンスを作成します。

 2.2デモアプリケーション

1)まず、良いIUserServiceインタフェースの定義、及び、インターフェースを実装
  2)クラスメソッドConfigureServicesのstartup.csに次のコードを追加します。
3)コンストラクタを介して注入

4)結果を表示するために実行します

 第三に、使用AutofacはIOCコンテナを交換します

Autofac是一款轻量级的IOC框架,目前和ASP.NET Core结合的非常好,官方网站http://autofac.org,源码下载地址https://github.com/autofac/Autofac

1)在Nuget中引入两个:Autofac.Extras.DynamicProxy(Autofac的动态代理,它依赖Autofac,所以可以不用单独引入Autofac)、Autofac.Extensions.DependencyInjection(Autofac的扩展)
2)在startup.cs类中ConfigureServices方法中添加以下代码:(注意:把返回值类型改为IServiceProvider)
var builder = new ContainerBuilder();//实例化Autofac容器
            builder.RegisterType<UserService>().As<IUserService>();//注册要通过反射创建的组件
            builder.Populate(services);
            var ApplicationContainer = builder.Build();
            return new AutofacServiceProvider(ApplicationContainer);//第三方IOC接管

3)同样也是通过构造函数进行注入

4)运行,查看结果

四、总结

本篇文章,主要是讲了IOC和DI的关系,以及通过微软自带的IOC框架和Autofac实现在ASP.NET Core中进行简单注入,其最大的优点就是实现了解耦的作用。同样,本篇文章也是为了记录自己学习的过程,后续有时间将会继续深入研究关于Autofac的内容。

好文参考:https://www.cnblogs.com/laozhang-is-phi/p/9541414.html(老张的哲学)

 

おすすめ

転載: www.cnblogs.com/Erhao/p/11118642.html