写网站教程,东莞市长安网站建设公司,站长网seo综合查询工具,p2p网站开发的内容这是一个关于 ASP.NET 6 依赖注入的系列文章。在这个系列中#xff0c;我们将了解到什么是依赖注入、控制反转#xff0c;它能够做什么#xff0c;以及我们为什么要使用它。之后#xff0c;我们会进一步了解 ASP.NET 6 依赖注入的生命周期、服务容器等重要概念。最后#… 这是一个关于 ASP.NET 6 依赖注入的系列文章。在这个系列中我们将了解到什么是依赖注入、控制反转它能够做什么以及我们为什么要使用它。之后我们会进一步了解 ASP.NET 6 依赖注入的生命周期、服务容器等重要概念。最后我们再深入了解服务作用域和更多的服务注册与注入方式。概述依赖注入是 ASP.NET 框架的核心。它主要提供两个核心功能「注册类型」这些注册到依赖注入系统的类型在 .NET 中有一个高大上的名字——服务。因为这些类型都是为了给系统提供某种服务所以类型注册也叫服务注册。「解析实例」服务/类型被注册以后就可以被同样注入到依赖注入系统中的其它服务/类型使用。如类型 A 依赖类型 B类型 A 就可以通过依赖注入获取类型 B 的实例。想要彻底理解依赖注入我们就必须要对控制反转有所了解。控制反转依赖注入中有一个叫做容器的东西也被称为 IoCInversion of Control - 控制反转容器。这个容器中保存着所有由依赖注入系统创建的实例那么它为什么叫 IoC 容器呢「控制反转IoC是一种反转流、依赖和接口的方式它把传统上由程序代码直接操控的对象的调用权交给第三方通过第三方来实现对象组件的装配和管理。」假设我们有这么一个场景一个四、五岁的小朋友想要吃东西。如果他自己从冰箱里找东西吃可能会造成一些不好的结果比如可能会拿到无法直接直接食用的食物或者忘记关冰箱门等灯。你可以思考一下一个四、五岁的小孩儿自己去冰箱拿食物甚至自己去加工食材你是不是觉得这不太正常那么正常情况是什么样的呢作为一个四、五岁的小孩儿只需要找父母陈述一下需求比如我饿了、我想吃XX这个时候父母就会做好他所需要的食物然后拿给他。从主动去冰箱拿正转食物到你想要吃的食物而被动获得反转这其实就是一个对象调用权转移的过程。前者是主动获取食物后者是由父母也就是第三方把食物给他而他并不关心食物从哪来以及怎么得来。所谓的“控制反转”的概念就是「对组件对象控制权的转移从程序代码本身转移到了代码之外的第三方。」通俗地说就是应用程序的用户代码不负责依赖对象的创建和维护而是将它交给第三方来负责这样控制权就由应用程序转移到了第三方即控制权实现了所谓的反转。例如类型 A 需要使用类型 B 的实例类型 B 实例的创建并不由类型 A 自己来负责而是通过第三方来创建。那么它和依赖注入又有什么关系呢依赖注入「依赖注入是 IoC 的一种实现方式用来实现依赖的反转。」在前面的场景中一个四、五岁的小孩想要吃东西。他只需要陈述一下需求父母就会做好他需要的食物依赖然后拿给他注入。依赖注入不是目的它只是实现控制反转的方式。使用依赖注入的目的是为了管理应用中复杂的依赖关系它可以帮助我们开发出松散耦合、可维护、可测试的代码和程序。现在再让我们回顾一下控制反转的解释。一种反转流、依赖和接口的方式它把传统上由程序代码直接操控的对象的调用权交给第三方通过第三方来实现对象组件的装配和管理。这个描述中的第三方就是依赖注入中的控制系统。IoC 容器在小孩子吃东西的场景里有一方扮演着 IoC 容器的角色你们分析下是谁我想很多人的第一直觉是“父母”其实不严谨的来说冰箱才是扮演 IoC 容器的角色父母则是扮演依赖注入中控制系统的角色。IoC 容器是依赖注入中一个保存已创建实例的东西如果实例已创建并且具有有效的生命周期那么控制系统会直接从 IoC 容器获取实例否则才会创建实例。冰箱中的东西都是父母买回来放进去的同样也需要他们从冰箱中拿出来。「所谓依赖注入系统本质上就是一个实现了类型注册、实例解析和实例生命周期管理的组件。」关于生命周期的内容我们会在该系列的下一篇文章中详细讨论。如果你了解工厂模式那么你可以简单的把为依赖注入系统看作是一个超级工厂。在 .NET 的依赖注入系统中所有注册的类型都被称为服务。ASP.NET 中的组件大都都需要通过依赖注入获取它所依赖的服务实例。所以说整个 ASP.NET 框架都是建立在依赖注入系统之上的这也是开发 ASP.NET 应用的最基本的编程模式。更多精彩内容请关注我▼▼如果喜欢我的文章那么在看和转发是对我最大的支持戳下面蓝字阅读ASP.NET 6 中间件系列推荐关注微信公众号码侠江湖 觉得不错点个在看再走哟