九、控制反转(IOC)、依赖注入是啥?
一种反转流、依赖和接口的方式,它把传统上由程序代码直接操控的对象的控制权交给第三方,通过第三方来实现对象组件的管理。应用程序本身不负责所依赖的对象的创建和维护,交给第三方来负责。IOC容器(第三方)是由依赖注入框架提供的。把所有的类都给放到这个容器里。
依赖注入:控制反转的实现方式。把所有有依赖关系的类,都放入容器中,解析出需要的类的实例。
依赖注入常见的方式有两种:①构造函数注入②属性注入
依赖注入框架:.NET Autofac、Unity。
十、注册的类型的生命周期
Unity整个容器最常见的生命周期:
①瞬时:默认的,生命很短暂,没有生命周期,无状态、轻量级的一些服务类型,使用不太频繁的临时对象;
②单例:即便不想使用依赖注入,应用有单例的应用,用容器来管理单例。容器可以统一管理对象周期,比较好维护,少些重复性的代码;
③线程单例(作用域):在用一个线程里,是单例的,不同线程的话就是全新的。
其他的生命周期:
①解析生存期;
②分层单例(子容器单例),支持子容器,容器有不同级别,根容器是单例。
容器里面,有两个最核心的方法:
①一个是RegisterType方法,注册类型的,在容器里映射关系;
②另一个是Resolve方法,解析我们需要的类型,并且实例化。