首页 > 其他分享 >.net Ioc 详解

.net Ioc 详解

时间:2022-09-20 11:57:33浏览次数:59  
标签:容器 DI 对象 Ioc 详解 单例 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生命能够周期服务在第一被请求时创建,在后续的每个请求都会使用同一个实例。如果你的应用需要单例服务,推荐的做法是交给服务容器来负责单例的创建和生命周期管理,而不是自己来走这些事情。

标签:容器,DI,对象,Ioc,详解,单例,net,IOC,注入
From: https://www.cnblogs.com/Early/p/16710529.html

相关文章

  • A Graph Convolutional Network with Adaptive Graph Generation and Channel Selecti
    motivation图神经网络已经被证明可以很好的解决长距离的语义依赖。但是之前的方法大多使用固定的图,如依赖于外部解析器生成的图(句法依存图等)图是固定的无法使用梯度......
  • HTML详解、HTML标签分类
    什么是HTMLHTML(超文本标记语言——HyperTextMarkupLanguage)是构成Web世界的一砖一瓦。它定义了网页内容的含义和结构。除HTML以外的其它技术则通常用来描述一个网页......
  • Kafka为什么性能这么快?4大核心原因详解
    Kafka的性能快这是大厂Java面试经常问的一个话题,下面我就重点讲解Kafka为什么性能这么快的4大核心原因@mikechen1、页缓存技术Kafka是基于操作系统的页缓存(pagecach......
  • pod内部java.net.UnknownHostException
    周日中午接应用电话,反馈有个应用异常,查看pod日志中,出现以下的报警java.net.UnknownHostException:channel-ndc-imp查看channel-ndc-imp服务,是正常的。尝试登录某个pod,n......
  • 14 张图详解 Zookeeper + Kafka on K8S 环境部署
    转载自:https://www.cnblogs.com/liugp/p/16706192.html一、概述ApacheZooKeeper 是一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务,ZooKeeper致......
  • linux系统 net.core.somaxconn参数
    1、如何查看该参数值1)查看所有内核参数及值sysctl-a #查看所有内核参数及值2)查看net.core.somaxconn参数[root@localhost]#sysctl-a|grepnet.co......
  • 在CMD中查看电脑已安装asp.net版本
    一、查看.NetFramework版本1、打开cmd2、输入代码regquery"HKLM\Software\Microsoft\NETFrameworkSetup\NDP"/s/vversion|findstr/iversion|sort/+26/......
  • 【数据库】C#使用ADO.NET操作sqlite数据库 --Microsoft.Data.Sqlite
    概述操作sqlite数据库之前你必须了解:ADO.NET、数据提供程序等知识点,以下简单介绍。ADO.NET是微软公司提供的一款全新的数据库访问技术,是在.NETFramework中负责数据访问......
  • 【数据库】OLE-DB、ODBC、ADO.NET、ADO、sql sever .net、 sqlite .net是什么
    概览OLE-DB、ODBC、ADO.NET、ADO、sqlsever.net、sqlite .net面像对象的数据库访问技术,可以将他们比喻为数据库应用程序和数据源之间的桥梁ODBC:访问关系型数据库OL......
  • .NET 7 来了!!!
    .NET7 首个RC(发布候选)版本最近.Net的大事件,就是微软发布了.NET7的首个RC(发布候选)版本,而据微软发布的消息,这是 .NET7的最后一个预览版,下一个版本将是第一个候......