.net Ioc 详解

一、概念

1.1 什么是IOC?Ioc—Inversion of Control,即 控制反转

 其是一种 设计思想,而不是一种技术。在没有使用IOC之前,我们一般是通过new来实例化,从而创建一个对象。但是我们使用IOC之后,创建这个对象的控制权将由内部转换到外部,那么这个过程便可以理解为控制反转。也即 把对象转换成抽象对象的依赖

同时控制反转也是一个目标,控制反转的优点有如下两点:

  • 可以很好的做到 解耦

  • 屏蔽对象的实现细节 只关心动作不关心动作中的细节。

1.2 什么是DI(依赖注入)?

全称为 DependencyInjection
意思自身对象中的内置对象是通过注入的方式进行创建。形象的说,即由容器动态的将某个依赖关系注入到组件之中。

1.3 IOC和DI的联系?

IOC是一种设计思想,而DI是这种设计思想的一个实现。

理解IOC和DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”。

●谁依赖于谁:当然是应用程序依赖于IoC容器;

●为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;

●谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;

●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)

1.4 常见的IOC框架。

微软.net core 内置的DI、Autofac、Unity

二、内置IOC

2.1 内置的IOC 有三种生命周期

    • Transient
      :瞬时生命周期, Transient服务在每次被请求时都会被创建一个新的对象。这种生命周期比较适用于轻量级的无状态服务。

    • Scoped
      :Scoped生命周期的服务是每次web请求被创建,局部单例对象, 在某个局部内是同一个对象(作用域单例,本质是容器单例);一次请求内是一个单例对象,多次请求则多个不同的单例对象.

    • Singleton
      :Singleton生命能够周期服务在第一被请求时创建,在后续的每个请求都会使用同一个实例。如果你的应用需要单例服务,推荐的做法是交给服务容器来负责单例的创建和生命周期管理,而不是自己来走这些事情。

posted @ 2022-09-20 11:42  EarlyTao  阅读(1288)  评论(0编辑  收藏  举报