ASP.NET.Core --依赖注入

前言:

借助依赖注入框架,我们可以轻松管理类直接的依赖,帮助我们在构建应用时遵循设计原则,确保代码的可维护性和扩展性。
ASP.NET Core 的整个架构中,依赖注入框架提供了对象创建和生命周期管理的核心能力,各个组件相互协作,也是由依赖注入框架的能力实现的。

1:核心包
Microsoft.Extensions.DependecyInjection.Abstractions //抽象包
Microsoft.Extensions.DependecyInjection //具体实现包

用到了经典的设计模式,接口实现分离模式。
抽象包只包含接口的定义,实现包包含实现。 意味着我们的组件只需要依赖他的抽象接口,而不用依赖他的实现,
使用的时候注入他的具体实现即可,意味着我们可以替换具体的依赖注入框架实现,提高了程序的可扩展性。

2:核心类型
IServiceCollection:负责服务的注册
ServiceDescriptor:每个服务注册时的信息
IServiceProvider:具体的容器,也是由ServiceCollection build 出来的
IServiceScope:容器的子容器的生命周期

3:生命周期
Singleton:单例: 每次请求都是一个对象
Scoped:作用域:指在我的Scope的生存周期内,或者是子容器的生存周期内,如果容器释放掉,对象也会释放。每个请求内是相同的,不同的请求是不同的
transient:瞬时:我们每一次从容器里获取对象时都可以得到一个全新的对象

ps:[FromService]IMyservice myService 可以从容器里获取对象

4:注册方式
serviceProvider:工厂模式注册 ,适用于所有模式,可以在内部实现复杂逻

TryAddSingleton: 尝试注册(如果服务已经注册过了,就不在注册) //接口相同则注册不进去
TryAddEnumerable: 尝试注册 //实现类相同者注册不进去
Replace:替换注册:可以把之前注册过的服务替换成我们新注册的服务
RemoveAll<IOrderService>:删除注册:移除所有IOrderService的实现

(0)

相关推荐

  • ASP.Net 管道模型 VS Asp.Net Core 管道 总结

    dotNET跨平台 今天 1 管道模型 1 Asp.Net Web Form管道 请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象,封装此次请求有关的所有信息,然后进入H ...

  • 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务

    一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...

  • ASP.NET Core微服务最佳实践eShopOnContainers

    为了推广.Net Core,微软为我们提供了一个开源Demo-eShopOnContainers,这是一个使用Net Core框架开发的,跨平台(几乎涵盖了所有平台,windows.mac.linux ...

  • 【翻译】.NET 5 Preview 1 发布

    去年年底,我们发布了.NET Core 3.0和3.1.这些版本添加了桌面应用程序模型Windows Forms(WinForms)和WPF,ASP.NET Blazor用于构建SPA应用程序和用于构 ...

  • 为什么选择ASP.NET Core

    原创 张飞洪 dotNET跨平台 今天 什么是.NET 有一次小飞去面试,面试官上来就问了一个宏观的问题:"你觉得什么是.NET"?小飞的脑子嗡嗡的,支吾了半天,才吐了一些碎片化的 ...

  • 部署 Asp.Net Core 应用到 Docker

    前言: 今天不说Docker 是啥,容器是啥镜像又是啥(如果这些不知道,请自行学习),今天很单纯的将 .Net Core 应用程序部署到Docker上. 起因: 好多同学私信让我写篇能落地的[一步步] ...

  • 一文看懂:什么是.NET Core以及.NET Core能做什么?

    我们都知道.NET Core是一个可以用来构建现代.可伸缩和高性能的跨平台软件应用程序的通用开发框架.可用于为Windows.Linux和MacOS构建软件应用程序. 与其他软件框架不同,.NET C ...

  • .NET Core 依赖注入框架 框图笔记

    最近在看蒋金楠老师的<ASP.NET Core 3 框架揭秘>,画图总结一下第三章和第四章的内容. 内容请参见蒋老师博文:https://www.cnblogs.com/artech/p/ ...

  • net core WebApi——依赖注入Autofac

    周末加班,下午犯困,整理下之前鼓捣过的东西,看过我之前的webapi系列的读者知道,我之前试过Aspect,但是升级到3.0之后没往下去试了,当时还留了个坑,这不,现在果断移除了换成这个了. Auto ...

  • dotNET Core 3.X 依赖注入

    如果说在之前的 dotNET 版本中,依赖注入还是个比较新鲜的东西,那么在 dotNET Core 中已经是随处可见了,可以说整个 dotNET Core 的框架是构建在依赖注入框架之上.本文讲解下对 ...

  • 深入探究ASP.NET Core读取Request.Body的正确方式

    dotNET跨平台 今天 以下文章来源于yi念之间 ,作者yi念之间 前言 相信大家在使用ASP.NET Core进行开发的时候,肯定会涉及到读取Request.Body的场景,毕竟我们大部分的POS ...

  • ML.NET 示例:对象检测-ASP.NET Core Web和WPF桌面示例

    dotNET跨平台 今天以下文章来源于My IO ,作者My IO My IO记录工作和生活,将输入变成输出ML.NET 版本API 类型状态应用程序类型数据类型场景机器学习任务算法v1.5.0动态A ...

  • NET问答: 如何给 ASP.NET Core 配置指定端口 ?

    今天 以下文章来源于NET技术问答 ,作者Stackoverflow NET技术问答精选 StackOverFlow 上的.NET 相关技术问题解答 咨询区 Drew Noakes: 我是 ASP.N ...

  • 如何解决在ASP.NET Core中找不到图像时设置默认图像

    dotNET跨平台 今天 以下文章来源于UP技术控 ,作者conan5566 UP技术控不止IT 还有生活 背景 web上如果图片不存在一般是打xx,这时候一般都是会设置默认的图片代替.现在用中间件的 ...

  • 使用ASP .NET Core Razor页面,Web API和实体框架进行分页和排序

      如何实现分页和排序以产生良好的性能     如何使用.NETCoreRazor页面,WebAPI和实体框架实现分页和排序以产生良好的性能.     该项目的特点是:     选择页面大小     ...