各位亲爱的学员:
推荐大家阅读一下配置框架的源码,代码量虽然不多,但这里面有不少可以借鉴的设计方法和代码风格,另外其中有一个 ChainedConfigurationProvider,是课程里没有提到的,可以思考一下这个提供程序的使用场景。
源码下载地址:https://github.com/dotnet/extensions
课件和 Demo 地址
https://gitee.com/geektime-geekbang/NET-Core
作者回复: 实现上section的changetoken就是root的changetoken,没有区分。 需要特别区分的,可以自己build一个root对象来做独立配置
作者回复: 你看看报错是不是因为服务的生命周期冲突了,服务单例时使用IOptionSnapshot会报错,因为IOptionSnapshot是Scoped的,不能被单例服务依赖。 建议使用IOptionsMonitor<T>,它是单例的。 另外需要注意的是在注册时传入的是T,服务构造函数注入的是IOptionsMonitor<T>,如: services.Configure<T>(configuration)
作者回复: 注册为scope生命周期,工厂模式构造,就能够支持热更新。在k8s+微服务架构下,重启应用的代价一般是比较小的,可以滚动更新,配置热更更多用在特殊的场景,例如调整日志输出级别以排查问题
作者回复: 内存提供程序和环境变量提供程序并没有跟踪数据变化,有需求的话可以基于现有的实现重写自定义的监听逻辑。
作者回复: 文件系统有关
作者回复: 参考后面Options的章节