ASP.NET Core中的依赖注入如何实现和优化?
摘要:[TOC] 什么是依赖注入 软件设计原则中有一个依赖倒置原则(DIP),为了更好的解耦,讲究要依赖于抽象,不要依赖于具体。而控制反转(Ioc)就是这样的原则的其中一个实现思路, 这个思路的其中一种实现方式就是依赖注入(DI)。 什么是依赖
目录什么是依赖注入ASP .NET Core 中使用依赖注入注册使用释放替换为其它的 Ioc 容器参考
什么是依赖注入
软件设计原则中有一个依赖倒置原则(DIP),为了更好的解耦,讲究要依赖于抽象,不要依赖于具体。而控制反转(Ioc)就是这样的原则的其中一个实现思路, 这个思路的其中一种实现方式就是依赖注入(DI)。
什么是依赖:当一个类需要另一个类协作来完成工作的时候就产生了依赖。
什么是注入: 注入体现的是一个IOC(控制反转的的思想)。正转是自己来实例化需要的依赖。反转是类不应该自己创建它,而是应该由它的调用者传给它。于是可以通过构造函数等让外界把依赖传给类。
为什么要反转 为了在业务变化的时候尽少改动代码可能造成的问题。基于抽象添加新的实现。只需要在原来注入的地方改一下就可以了。
什么是容器 容器统一管理系统中的所有依赖。容器负责两件事情:
绑定服务与实例之间的映射关系
获取实例并对实例进行管理(创建与销毁)
ASP .NET Core 中使用依赖注入
IServiceCollection 负责注册服务,是一个IList类型的集合。
IServiceProvider 负责提供实例,是由IServiceCollection的扩展方法BuildServiceProvider创建的。
ServiceDescriptor 单个服务描述
Type ServiceType: 服务的类型
Type ImplementationType: 实现的类型
ServiceLifetime Lifetime: 服务的生命周期
object ImplementationInstance: 实现服务的实例
Func<IServiceProvider, object> ImplementationFactory: 创建服务实例的工厂
注册
ServiceCollection提供了三种注册方法分别对应着三种实例生命周期。
