您的位置:首页 > 编程语言 > ASP

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的对象。这个接口如下:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: