.Net Core依赖注入IOC和DI介绍
名词解释
说起依赖注入,很多人会想起两个词:IOC和DI。
- IOC(Inversion of Control)=控制反转
- DI(Dependency Injection)=依赖注入
IOC其实并不是某项具体的实现技术,它是一种思路(或者是设计理念),这一点很多有经验的同学都会搞混。如果用白话来讲,IOC就意味着把对象交给IOC容器控制,而不是在对象内部控制。简而言之就是“容器控制对象”。
套入到程序来说,我们有两个class,A、B,如果B要用到A的方法,传统的方法是在B中添加A的引用(比如new),这种就算是“正转”,但如果我们把这个过程IOC容器去控制,那就是“反转”。IOC也不能为程序带来更多功能,其主要目的是为了提升重用率、增强扩展性、降低耦合性、增强对程序设计的理解。
DI是什么呢?可以把它理解为IOC的另一种解释方式。可能是IOC的概念听起来的确云里雾里,所以有位大佬(Martin Fowler)给出了一个新的名词DI,明确指出“被注入对象依赖IoC容器配置依赖对象”,从另一个角度解释了IOC的理念。
net core的实现
net core自带ioc容器,如果你想把某个对象交给ioc容器来控制,最简单的使用方法就是在你的startup.cs中添加代码,如下:
public void ConfigureServices(IServiceCollection services) { services.AddScoped<XXX>(); services.AddTransient<XXX>(); services.AddSingleton<XXX>(); }
在这个阶段,需要注意交给ioc容器控制的对象有三种声明周期可以选择:
- (单例模式)Singleton:首次请求创建,之后所有请求都沿用这个已创建的服务。
- (瞬态模式)Transient:每次请求都创建,上面的代码里就是这种模式。
- (作用域模式)Scoped:每次请求创建,同一个请求内不管调用多少次都只会被创建一次。
如果需要使用被注入的对象,只需要在构造函数中添加被注入类型的对象即可,如下:
private readonly XXX _x; public XController(XXX x) { _x = x; }
当有多个对象时如法炮制。
到此这篇关于.Net Core依赖注入IOC和DI介绍的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
ASP.NET Core应用中与第三方IoC/DI框架的整合
一.ConfigureServices方法返回的ServiceProvider没有用! 我们可以通过一个简单的实例来说明这个问题.我们先定义了如下这个一个MyServiceProvider,它实际上是对另一个ServiceProvider的封装.简单起见,我们利用一个字典来保存服务接口与实现类型的映射关系,这个关系可以通过调用Registe方法来注册.在提供服务实例的GetService方法中,如果提供的服务类型已经被注册,我们会创建并返回对应的实例对象,否则我们将利用封装的这个ServiceP
-
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
依赖倒置原则(DIP) 依赖倒置(Dependency Inversion Principle,缩写DIP)是面向对象六大基本原则之一.他是指一种特定的的解耦形式,使得高层次的模块不依赖低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象. 该原则规定: 高层次的模块不应该依赖低层次模块,二者都应该依赖其抽象接口. 抽象接口不应该依赖于具体实现,而具体实现则应该依赖于抽象接口. 通过如下一个简单的示例,我们来看一下,我们通过一个简单地下单流程向我们的用户发
-
.Net Core依赖注入IOC和DI介绍
名词解释 说起依赖注入,很多人会想起两个词:IOC和DI. IOC(Inversion of Control)=控制反转 DI(Dependency Injection)=依赖注入 IOC其实并不是某项具体的实现技术,它是一种思路(或者是设计理念),这一点很多有经验的同学都会搞混.如果用白话来讲,IOC就意味着把对象交给IOC容器控制,而不是在对象内部控制.简而言之就是“容器控制对象”. 套入到程序来说,我们有两个class,A.B,如果B要用到A的方法,传统的方法是在B中添加A的引用(比如ne
-
ASP.NET Core依赖注入详解
目录 一.什么是依赖注入 二.使用框架提供的服务 三.注册服务 四.生命周期 五.请求服务 六.设计你的依赖服务 ASP.NET Core的底层设计支持和使用依赖注入.ASP.NET Core应用程序可以利用内置的框架服务将它们注入到启动类的方法中,并且应用程序服务能够配置注入.由ASP.NET Core提供的默认服务容器提供了最小功能集,并不是要取代其它容器. 一.什么是依赖注入 依赖注入(Dependency injection,DI)是一种实现对象及其合作者或依赖项之间松散耦合的技术.将类
-
.NET Core使用Autofac容器的DI依赖注入,IOC控制反转及AOP切面编程
目录 Autofac 容器 Autofac 多种注入方式 Autofac 生命周期 Autofac 支持配置文件 Autofac 整合 .NET 5 MVC Autofac 支持控制器属性注入 Autofac 单实例多实现 Autofac 支持 AOP Autofac 容器 Autofac 是一款.NET IoC 容器 . 它管理类之间的依赖关系, 从而使 应用在规模及复杂性增长的情况下依然可以轻易地修改 . 它的实现方式是将常规的.net类当做组件处理. 安装 NuGet 程序包: Autof
-
ASP.NET Core依赖注入(DI)讲解
ASP.NET Core的底层设计支持和使用依赖注入.ASP.NET Core 应用程序可以利用内置的框架服务将服务注入到启动类的方法中,并且应用程序服务也可以配置注入.由ASP.NET Core 提供的默认服务容器提供了最小功能集,并不是取代其他容器. 1.浅谈依赖注入 依赖注入(Dependency injection,DI)是一种实现对象和依赖者之间松耦合的技术,将类用来执行其操作的这些对象以注入的方式提供给该类,而不是直接实例化依赖项或者使用静态引用.一般情况,类会通过构造函数声明器2依
-
ASP.NET Core 依赖注入框架的使用
目录 一.IoC框架 二.IoC-Autofac 三..NET Core中自带DI的使用 四.Autofac 使用 五.批量注入 前言: 还记得上篇文章中ASP.NET Core 依赖注入详细最后提及到,假如服务越来越多怎么处理呢,本篇文章将会带来解决办法.这篇是接上一篇文章的,概念方面的可以参考上一篇文章. 一.IoC框架 先说说常见的Ioc框架吧. Autofac: 目前net用的比较多,好多大佬的项目比较优先选择的框架. Ninject: 已经很少用了,还时在很早的文章中见过. Unity
-
ASP.NET Core依赖注入系列教程之服务的注册与提供
前言 在采用了依赖注入的应用中,我们总是直接利用DI容器直接获取所需的服务实例,换句话说,DI容器起到了一个服务提供者的角色,它能够根据我们提供的服务描述信息提供一个可用的服务对象.ASP.NET Core中的DI容器体现为一个实现了IServiceProvider接口的对象. ServiceProvider与ServiceDescriptor 服务的注册与提供 利用ServiceProvider来提供服务 提供一个服务实例的集合 获取ServiceProvider自身对
-
理解ASP.NET Core 依赖注入(Dependency Injection)
目录 依赖注入 什么是依赖注入 依赖注入有什么好处 ASP.NET Core内置的依赖注入 服务生存周期 服务释放 TryAdd{Lifetime}扩展方法 解析同一服务的多个不同实现 Replace && Remove 扩展方法 Autofac 服务解析和注入 构造函数注入 方法注入 属性注入 一些注意事项 框架默认提供的服务 依赖注入 什么是依赖注入 简单说,就是将对象的创建和销毁工作交给DI容器来进行,调用方只需要接收注入的对象实例即可. 微软官方文档-DI 依赖注入有什么好处 依赖
-
ASP.NET Core 依赖注入详细
目录 一.控制反转 二.好莱坞法则 三.流程控制 四.三种依赖注入方式 1.构造器注入 2.属性注入 3.方法注入 五.生命周期 六.ASP.Net Core 中自带的注入 前言: ASP.NET Core 应用在启动过程中会依赖各种组件提供服务,而这些组件会以接口的形式标准化,这些组件这就是我们所说的服务,ASP.NET Core框架建立在一个底层的依赖注入框架之上,它使用容器提供所需的服务.要了解依赖注入容器以及它的机制,我们需要了解什么是依赖注入. 一.控制反转 说道依赖注入就不得不提控制
-
详解asp.net core 依赖注入
前言 好久没有写微博了,因为前段时间由于家庭原因决定从工作了3年多的北京转移到上海去.依赖注入在学习net core的时候也有写过类似的东西,只是实践的较少,结果来到上海新公司系统框架涉及到了这块知识点,所以在了解完自己的项目之后决定做一些相关的总结.接下来就让我们先来了解hewi依赖注入. 什么是依赖注入 依赖注入,全称是"依赖注入到容器", 容器(IOC容器)是一个设计模式,它也是个对象,你把某个类(不管有多少依赖关系)放入这个容器中,可以"解析"出这个类的实例
-
spring四种依赖注入方式的详细介绍
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. spring有多种
随机推荐
- 让Sqlite脱离VC++ Runtime独立运行的方法
- JS类中定义原型方法的两种实现的区别
- 如何设置springboot启动端口
- javascript中处理时间戳为日期格式的方法
- winform绑定快捷键的方法
- Android Retrofit 中文乱码问题的解决办法
- mysql通过my.cnf修改默认字符集为utf-8的方法和注意事项
- C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法
- PHP 接入支付宝即时到账功能
- jquery获取form表单input元素值的简单实例
- JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
- 自动最大化窗口的Javascript代码
- js使用for循环查询数组中是否存在某个值
- 下载网站打开页面后间隔多少时间才显示下载链接地址的代码
- php获取文件类型和文件信息的方法
- C++设计模式编程中使用Bridge桥接模式的完全攻略
- Android中应用多进程的整理总结
- Python调用服务接口的实例
- jQuery实现碰到边缘反弹的动画效果
- Django中提供的6种缓存方式详解