前言:设计模式
借助依赖注入框架,咱们能够轻松管理类直接的依赖,帮助咱们在构建应用时遵循设计原则,确保代码的可维护性和扩展性。
ASP.NET Core 的整个架构中,依赖注入框架提供了对象建立和生命周期管理的核心能力,各个组件相互协做,也是由依赖注入框架的能力实现的。
1:核心包
Microsoft.Extensions.DependecyInjection.Abstractions //抽象包
Microsoft.Extensions.DependecyInjection //具体实现包架构
用到了经典的设计模式,接口实现分离模式。
抽象包只包含接口的定义,实现包包含实现。 意味着咱们的组件只须要依赖他的抽象接口,而不用依赖他的实现,
使用的时候注入他的具体实现便可,意味着咱们能够替换具体的依赖注入框架实现,提升了程序的可扩展性。
2:核心类型
IServiceCollection:负责服务的注册
ServiceDescriptor:每一个服务注册时的信息
IServiceProvider:具体的容器,也是由ServiceCollection build 出来的
IServiceScope:容器的子容器的生命周期
3:生命周期
Singleton:单例: 每次请求都是一个对象
Scoped:做用域:指在个人Scope的生存周期内,或者是子容器的生存周期内,若是容器释放掉,对象也会释放。每一个请求内是相同的,不一样的请求是不一样的
transient:瞬时:咱们每一次从容器里获取对象时均可以获得一个全新的对象
ps:[FromService]IMyservice myService 能够从容器里获取对象
4:注册方式
serviceProvider:工厂模式注册 ,适用于全部模式,能够在内部实现复杂逻
TryAddSingleton: 尝试注册(若是服务已经注册过了,就不在注册) //接口相同则注册不进去
TryAddEnumerable: 尝试注册 //实现类相同者注册不进去
Replace:替换注册:能够把以前注册过的服务替换成咱们新注册的服务
RemoveAll<IOrderService>:删除注册:移除全部IOrderService的实现框架