当前播放: 05 | 依赖注入:良好架构的起点
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:必备知识 (20讲)
01 | 课程介绍
免费
02 | 内容综述
免费
03 | .NET Core的现状、未来以及环境搭建
免费
04 | Startup:掌握ASP.NET Core的启动过程
免费
05 | 依赖注入:良好架构的起点
免费
06 | 作用域与对象释放行为:你知道IDisposable对象释放的时机和坑吗?
07 | 用Autofac增强容器能力:引入面向切面编程(AOP)的能力
08 | 配置框架:让服务无缝适应各种环境
09 | 命令行配置提供程序:最简单快捷的配置注入方法
10 | 环境变量配置提供程序:容器环境下配置注入的最佳途径
11 | 文件配置提供程序:自由选择配置的格式
12 | 配置变更监听:配置热更新能力的核心
13 | 配置绑定:使用强类型对象承载配置数据
14 | 自定义配置数据源:低成本实现定制化配置方案
15 | 选项框架:服务组件集成配置的最佳实践
16 | 选项数据热更新:让服务感知配置的变化
17 | 为选项数据添加验证:避免错误配置的应用接收用户流量
18 | 日志框架:聊聊记日志的最佳姿势
19 | 日志作用域:解决不同请求之间的日志干扰
20 | 结构化日志组件Serilog:记录对查询分析友好的日志
05 | 依赖注入:良好架构的起点

05 | 依赖注入:良好架构的起点

肖伟宇
校宝在线架构师、SkyWalking .NET探针贡献者、NetCorePal组件库创建者
61讲 约600分钟2460
订阅¥129
10
本节摘要
登录 后留言

精选留言(19)

  • 阿星Plus
    想问一下,TryAdd... 、RemoveAll、Replace... 等这些方法的应用场景有哪些呢?

    作者回复: TryAdd是在你不确定该服务是否曾经注册过时调用,MVC、RazorPages会共享不少组件,其注册服务的源码里,就大量用到了TryAdd。
    RemoveAll是指你要移除某个服务类型的所有注册。
    Replace可以在你期望替换某些已经注册了的服务时调用。

    2020-01-14
    2
  • wdls
    如果我不使用tryadd , 我重复注册了相应的服务, 那会有什么后果?

    作者回复: 服务会被多次注册,GetServce获取服务时,会得到最后注册的那个,使用GetServces会得到所有注册的,与你注册顺序相同

    2020-01-25
    1
  • harry
    😀希望有对基础知识的补充,之前零散学过,会一些,但是看着还是有的懵……

    作者回复: 推荐阅读一下官方文档https://docs.microsoft.com/zh-cn/

    2020-01-15
    1
    1
  • Mr.Beethoven
    services.AddScoped<IOrderService, OrderService>();
    services.AddScoped<IOrderService, OrderServiceEX>();
    注册的时候注册了2个接口实例 使用的时候 默认是用的最后注册的,怎么选择前面的,需要写遍历判断吗,有api能直接选择吗

    作者回复: 需要遍历,根据实际类型来判断。
    如果特别需要对同一服务注册不同的类型并加以区分的话,可以使用第三方的依赖注入框架,支持命名注册

    2020-01-14
    1
  • Mr.Beethoven
    老师,像TryAddSingleton这种 需要单独引入命名空间的,但是提前并不知道有这个命名空间和这个方法,咋整
    只能是看文档一点点看到的了 是吧?
    感觉不知道就可能想不到的感觉。。。。

    作者回复: 关于常用的API还是要知道的,官方文档是最好的获取途径

    2020-01-14
    1
  • 公号:阿Q看世界
    肖老大讲的很不错!!

    作者回复: 感谢支持

    2020-01-13
    1
  • Eyri Cho
    如果一个Service在不同的作用域中都有注册,回获取到哪个呢?

    作者回复: 后注册的那个

    2020-02-07
  • 微重力
    讲的很具体,我要多看几遍
    2020-02-04
  • 这个依赖注入为什么不用配置文件?

    作者回复: 实际场景中,线上环境通过修改配置来切换依赖注入的方式比较少见,一般依赖修改还涉及到包的依赖和回归测试,因此用配置文件没有明显优势。

    2020-02-04
  • Calmly
    老师讲的很具体,好评

    作者回复: 感谢支持

    2020-02-01
  • Michael
    请问下,不能用电脑下载嘛?准备下载到高铁上看的,手机可以下载,但是屏幕太小,不好看

    编辑回复: 你好,是的,Web端无法下载。

    2020-01-22
  • 墨墨墨墨小宇
    Scope 这个生命周期,有使用场景吗?感觉平时没有用到的地方哎

    作者回复: 例如管理数据库连接对象,每个用户请求范围内,使用同一个实例,处理响应完毕,由容器帮忙释放

    2020-01-22
  • Larry
    想请教一个 微服务的问题,两个组需要api 。分析得出结论 他们需要的内容差不多 ,只是一个组需要的比另一个组字段多!想问一下,是设计一个字段!以后通过权限控制吗?还是就设计两个API!谢谢🙏

    作者回复: 从你的描述来看,你需要确定这两个需求是否是不同角色的诉求,或者是否是在解决不同的问题。
    如果是,则分别设计API。
    如果不是,说明两个业务诉求的目的是一致的,应该用一个接口可以满足。

    不建议通过字段当作权限来判断不同的逻辑,这样会把两个不同的需求,耦合在一个API中。

    2020-01-20
    2
  • 9527
    太基础了
    2020-01-18
  • 叨叨王
    工厂方法注入时,对应的serviceProvider是根容器下的还是某个scope下的。

    作者回复: 这个主要看你注册服务的生命周期是单例的还是范围的

    2020-01-17
  • 
    这种依赖注入 如何使用在控制台应用程序中呢。

    作者回复: 类似下面的代码,后面的章节有提到
    IServiceCollection serviceCollection = new ServiceCollection(); //创建容器注册集合
    IServiceProvider service = serviceCollection.BuildServiceProvider(); //构建容器

    2020-01-17
  • 皮一下
    求更新

    作者回复: 23号开始每周四更新

    2020-01-15
  • 胡峣
    老师,有没有实现类似spring componentscan 自动组装实例的dotnet实现?

    作者回复: Autofac 提供了 RegisterAssemblyTypes 能力可以实现类似的能力

    2020-01-15
  • InfoQ_e15910ea83b9
    真基础啊

    作者回复: 内容需要照顾到对.NET Core不了解的人,感谢提出建议

    2020-01-13
    1
收起评论
看过的人还看
DDD实战课

欧创新  人保高级架构师

24讲 | 5895 人已学习

¥68
设计模式之美

王争  前Google工程师,《数据结构与算法之美》专栏作者

100讲 | 20015 人已学习

拼团 ¥129 原价 ¥199
Electron开发实战

邓耀龙  美团高级前端工程师

30讲 | 1689 人已学习

¥99
说透敏捷

宋宁  IBM资深敏捷教练

12讲 | 6219 人已学习

¥39