.NET Core - 配置框架:让服务无缝适应各种环境

简介: .NET Core - 配置框架:让服务无缝适应各种环境

本节学习.NET Core的配置框架,通过配置框架可以以不同的方式来配置不同环境下的服务,以使服务无缝适应各种环境。

核心组件包

  • Microsoft.Extensions.Configuration.Abstractions
  • Microsoft.Extensions.Configuration

配置框架

  • 以key-value字符串键值对的方式抽象了配置
  • 支持从各种不同的数据源读取配置

配置框架核心类型

  • IConfiguration
  • IConfigurationBuilder
  • IConfigurationRoot
  • IConfigurationSection

配置框架扩展点

  • IConfigurationSource
  • IConfigurationProvider

配置框架的种类

  • 内存配置
  • 命令行配置
  • 环境变量配置
  • 文件提供程序配置

通过代码来理解框架的核心类型

IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddInMemoryCollection(
    new Dictionary<string, string>()
    {
        {"key1","value1" },
        {"key2","value2" },
        {"section1:key3","value3" },
        {"section2:section3:key4","value4" }
    }
    );
IConfigurationRoot configurationRoot = configurationBuilder.Build();
Console.WriteLine($"key1:{configurationRoot["key1"]}");
Console.WriteLine($"key2:{configurationRoot["key2"]}");
Console.WriteLine($"key3:{configurationRoot["section1:key3"]}");
IConfigurationSection section1 = configurationRoot.GetSection("section1");
Console.WriteLine($"section1_key3:{section1["key3"]}");
IConfigurationSection section3 = configurationRoot.GetSection("section2:section3");
Console.WriteLine($"section2_section3_key4:{section3["key4"]}");
  • 配置的构建都通过IConfigurationBuilder来完成
  • 配置通过Builder创建,得到一个配置跟IConfigurationRoot
  • 有的配置有“节”,通过“:”来分割,获取节通过IConfigurationSection

 

这里注意以下几点

  • 获取section内的值,可以直接通过section:key的完整方式获取
  • 后面讲到环境变量配置方式时,其中可用"__"来代替“:”,注意该方式只适用于环境变量配置方式,其他方式不适用。

从下节开始,学习几种不同的配置方式。

源码可访问

https://github.com/IronMarmot/Samples/tree/master/CoreSamples


相关文章
|
2月前
|
存储 安全 编译器
|
2月前
|
SQL 开发框架 .NET
|
23小时前
|
算法 BI API
C#/.NET/.NET Core优秀项目和框架2024年1月简报
C#/.NET/.NET Core优秀项目和框架2024年1月简报
|
23小时前
|
开发框架 JavaScript 前端开发
5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
|
25天前
|
IDE 前端开发 JavaScript
【C#】C# 开发环境配置(Rider 一个.NET 跨平台集成开发环境)
【1月更文挑战第26天】【C#】C# 开发环境配置(Rider 一个.NET 跨平台集成开发环境)
|
25天前
|
PHP Windows
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
|
29天前
|
算法 C#
C# .Net Core bytes转换为GB/MB/KB 算法
C# .Net Core bytes转换为GB/MB/KB 算法
12 0
|
29天前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
69 0
|
1月前
|
NoSQL 关系型数据库 MongoDB
【DotNetGuide】C#/.NET/.NET Core学习、工作、面试指南
【DotNetGuide】C#/.NET/.NET Core学习、工作、面试指南
|
1月前
|
开发框架 前端开发 JavaScript
一款基于.NET Core的快速开发框架、支持多种前端UI、内置代码生成器
一款基于.NET Core的快速开发框架、支持多种前端UI、内置代码生成器

热门文章

最新文章