【ASP.NET Core快速入门】(六)配置的热更新、配置的框架设计
2017-12-18 00:18
1191 查看
配置的热更新
什么是热更新:一般来说,我们创建的项目都无法做到热更新:即项目无需重启,修改配置文件后读取到的信息就是修改配置之后的我们只需要吧项目中用到的IOptions改成IOptionsSnapshot即可
那么是怎么实现的呢?
其实我们在添加json配置文件的时候往往没有添加后面两个参数。
第一个参数(optional):(Whether the file is optional)是否可选,意思是如果配置文件不存在的时候是否要抛异常。
第二个参数(reloadOnChange):(Whether the configuration should be reloaded if the file changes.)是否改变的时候重新加载。
其实我们在asp.net core项目中即使不加这两个参数,只要将IOptions改成IOptionsSnapshot就会进行热更新,CreateDefaultBuilder已经替我们进行了热更新。
下面我们看一下CreateDefaultBuilder的源代码
WebHost.cs源代码:https://github.com/aspnet/MetaPackages/blob/dev/src/Microsoft.AspNetCore/WebHost.cs
我们可以看到CreateDefaultBuilder已经默认加载appsetting.json文件,并启用了热更新
因为如果我们一直要保持文件变更读取的话,就要有一个线程一直对文件进行读取和变更操作。如果我们不想启用默认热更新的话,我们可以将热更新覆盖掉。
配置的框架设计
以下代码部分为伪代码初始化Builder
var builder = new ConfigurationBuilder()
将source添加到builder
aps.net corewei为我们提供了很多source和添加source的方式builder.Add(source)
Build
var configurationRoot = builder.Build()
这里的Build实际上是对builder的每一个source进行Build,然后创建一个provider,添加到providers列表中,最后初始化了一个包含了所有的provider的配置
Use
使用的时候实际上是 遍历所有的provider,找到可以使用的provider然后返回value从上面可以看出来最重要的是source和provider
IConfigurationSource与IConfigurationProvider
我们可以看出Json、Memory、Inl、Command、Xml都实现IConfigurationSource接口
抽象类ConfigurationProvider实现IConfigurationProvider接口,其他的FileIConfigurationProvider(基类,文件的读取)、CommandIConfigurationProvider继承ConfigurationProvider,JsonConfigurationProvider、XmlConfigurationProvider继承FileIConfigurationProvider
相关文章推荐
- 菜鸟入门【ASP.NET Core】6:配置的热更新、配置的框架设计
- 【ASP.NET Core快速入门】(五)命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
- 基于元数据配置的asp.net数据库应用快速开发框架设计及实现
- 【ASP.NET Core快速入门】(七)WebHost的配置、 IHostEnvironment和 IApplicationLifetime介绍、dotnet watch run 和attach到进程调试
- ASP.NET Core框架揭秘(持续更新中…)
- ASP.NET Core的身份认证框架IdentityServer4--(1)服务配置
- IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity
- 原创关于asp.net快速入门教程的个性化门户配置设置篇一
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
- asp.net core轻松入门之MVC中Options读取配置文件
- 【ASP.NET Core快速入门】(二)部署到IIS
- Asp.Net Core轻松入门之WebHost的配置
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V3.3.9 Stable [开源]
- ASP.NET Core的身份认证框架IdentityServer4--(2)API跟WEB端配置
- asp.net core轻松入门之MVC中Options读取配置文件
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V3.3.9 Stable [开源]
- ASP.NET Core 快速入门(环境篇)
- ADO.NET Entity Framework插入和更新数据(实体框架快速入门)
- ASP.NET Core 快速入门(实战篇)