Asp.Net Core- 配置组件详解
2016-07-18 15:10
716 查看
我们之前写的配置都是放置在配置文件Web.config或者app.config中,.net core提供了全新的配置方式,可以直接写在内存中或者写在文件中。
.Net Core的配置API主要体现在3个类中Configuration、ConfigurationBuilder、ConfigurationProvider中。
配置文件其实就是一个键值对。Configuration以树形结构描述了这些键值对之间的关系。我们的配置文件比如project.json是怎么转换成Configuration树形结构的呢?
Microsoft.Extensions.Options这个命名空间下的类提供了文件向Configuration的转换。
一、配置文件分为3种结构
1. 逻辑结构:就是我们看到的结构,树形结构。
2. 原始结构:就是文件本身的结构,比如xml、json等等。
3. 物理结构:介于两者之间的结构,键值对。
配置组件的最终目的就是把原始结构转化成逻辑结构,在具体转换过程中,先找到对应的ConfigurationProvider转化为物理结构数据字典,然后再由ConfigurationBuilder转化为逻辑结构Configuration对象。
二、Configuration
Configuration对象泛指继承自接口IConfiguration的对象。这个接口如下:
View Code
Combine方法实现把路径连接成一个完整的路径。
以上对象之间的关系图如下:
综上,配置模块的最终目的是要把原始的配置文件比如:json、xml转换为一个ConfigurationRoot对象,这个对象是一个树形结构,下边是ConfigurationSection对象。当我们要获取某个配置时,通过ConfigurationRoot的ConfigurationProvider获取,每个ConfigurationSection都有一个对于根节点的引用。
参考链接:http://www.cnblogs.com/artech/p/asp-net-core-config-01.html
.Net Core的配置API主要体现在3个类中Configuration、ConfigurationBuilder、ConfigurationProvider中。
配置文件其实就是一个键值对。Configuration以树形结构描述了这些键值对之间的关系。我们的配置文件比如project.json是怎么转换成Configuration树形结构的呢?
Microsoft.Extensions.Options这个命名空间下的类提供了文件向Configuration的转换。
一、配置文件分为3种结构
1. 逻辑结构:就是我们看到的结构,树形结构。
2. 原始结构:就是文件本身的结构,比如xml、json等等。
3. 物理结构:介于两者之间的结构,键值对。
配置组件的最终目的就是把原始结构转化成逻辑结构,在具体转换过程中,先找到对应的ConfigurationProvider转化为物理结构数据字典,然后再由ConfigurationBuilder转化为逻辑结构Configuration对象。
二、Configuration
Configuration对象泛指继承自接口IConfiguration的对象。这个接口如下:
namespace Microsoft.Extensions.Configuration { using System; using System.Collections.Generic; public static class ConfigurationPath { public static readonly string KeyDelimiter = ":"; public static string Combine(IEnumerable<string> pathSegments) { if (pathSegments == null) { throw new ArgumentNullException("pathSegments"); } return string.Join(KeyDelimiter, pathSegments); } public static string Combine(params string[] pathSegments) { if (pathSegments == null) { throw new ArgumentNullException("pathSegments"); } return string.Join(KeyDelimiter, pathSegments); } public static string GetParentPath(string path) { if (!string.IsNullOrEmpty(path)) { int length = path.LastIndexOf(KeyDelimiter, (StringComparison) StringComparison.OrdinalIgnoreCase); if (length != -1) { return path.Substring(0, length); } } return null; } public static string GetSectionKey(string path) { if (!string.IsNullOrEmpty(path)) { int num = path.LastIndexOf(KeyDelimiter, (StringComparison) StringComparison.OrdinalIgnoreCase); if (num != -1) { return path.Substring(num + 1); } } return path; } } }
View Code
Combine方法实现把路径连接成一个完整的路径。
以上对象之间的关系图如下:
综上,配置模块的最终目的是要把原始的配置文件比如:json、xml转换为一个ConfigurationRoot对象,这个对象是一个树形结构,下边是ConfigurationSection对象。当我们要获取某个配置时,通过ConfigurationRoot的ConfigurationProvider获取,每个ConfigurationSection都有一个对于根节点的引用。
参考链接:http://www.cnblogs.com/artech/p/asp-net-core-config-01.html
相关文章推荐
- aspnet webapi 跨域请求 405错误
- 新建网站与新建Asp.Net Web 应用程序的区别
- ASP.NET MVC4在部署IIS后,运行时显示的是整个Web的目录列表
- ASP.Net MVC 生成安全验证码
- ASP.NET MVC对WebAPI接口操作(添加,更新和删除)
- ASP.NET简介
- asp.net 配置 X-Frame-Options
- dictionary对象构建二维数组研究
- ASP.NET Core 十种方式扩展你的 Views
- ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
- 初识ASP.NET Core 1.0
- ASP.NET MVC SSO 单点登录设计与实现
- asp.net 分布式应用开发
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(五)-- Filter
- 手动提交代替asp.net的button控件提交
- ASP.NET MVC进阶之路:深入理解Controller激活机制并使用Ioc容器创建对象
- asp.net对象——Response、Request
- NET Core环境并创建运行ASP.NET网站
- Mvc多级Views目录 asp.net mvc4 路由重写及 修改view 的寻找视图的规则
- ASP.NET身份认证