高端网站制作价格,企业简介模板免费下载,网站成功案例,公众号怎么制作好看的版面简介#xff1a; 这是一个基础组件#xff0c;是一个统一的配置模型#xff0c;配置可以来源于配置文件#xff08;json文件#xff0c;xml文件#xff0c;ini文件#xff09;#xff0c;内存对象#xff0c;命令行参数#xff0c;系统的环境变量又或者是你自己扩展的…简介 这是一个基础组件是一个统一的配置模型配置可以来源于配置文件json文件xml文件ini文件内存对象命令行参数系统的环境变量又或者是你自己扩展的配置源该组件将各个配置源的数据按统一的格式IDictionarystring, string Data进行加载进而对外提供调用接口。 不仅如此有些配置源如文件配置源还可以在配置源的数据发生变化时进行重新加载IDictionarystring, string Data而程序员随时可以判断是否已经重新加载或注册回调在重新加载配置时添加业务逻辑。 让我们先从一个问题切入源码不同格式的配置源如json数据是怎样转成IDictionarystring, string Data的层级关系丢了么 可以看到层级关系在转化为字典的key时使用冒号(:)分隔如果子节点是一个数组中间还会使用数组项的索引进行分隔见上图Configuration[wizards:0:Name]有了这种分隔模式任何数据源就都可以转为IDictionarystring, string对象了。 模型 配置组件的模型由如下几个核心对象组成 1.ConfigurationBuilder //编程入口负责收集配置源配置文件命令行参数内存对象等及将收集到的配置源Build调用各个配置源ConfigurationSource的Build方法成一个配置提供器 IConfigurationProvider的集合传入ConfigurationRoot对象通过该对象完成对不同数据源进行数据Load的过程。 2.IConfigurationSource //不同的配置源各自实现这个接口主要为上面的Build过程提供IConfigurationProvider对象。 3.IConfigurationProvider //具体实现配置数据Load的地方以及在数据源发生变化时重新加载数据及发出Change通知的地方。 4.ConfigurationRoot //用户直接使用的配置对象里面管理着IConfigurationProvider对象的集合Get和Set操作即由此对象调用各IConfigurationProvider完成。 5.ConfigurationSection //配置子节点的操作对象 源码说事 1.一个json文件是怎样变成一个字典对象为我们提供配置服务的 总结 配置组件的源码比较简单但实现的功能确很强大。里面的设计思路和实现手法都令人赞叹不已。asp.net core的系列框架源码都是这样实现手法有如少林七十二绝技每一个框架都惊艳江湖
相关文章
asp.net core源码飘香从Hosting开始
原文地址http://www.cnblogs.com/shiliyuanma/p/6682437.html.NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注