菜鸟入门【ASP.NET Core】6:配置的热更新、配置的框架设计
2018-01-24 16:28
1421 查看
配置的热更新
什么是热更新:这个词听着有点熟悉,但到底是什么呢?一般来说:创建的项目都无法做到热更新:即项目无需重启,修改配置文件后读取到的信息就是修改配置之后的
我们只需要吧项目中用到的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 core为我们提供了很多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快速入门】(六)配置的热更新、配置的框架设计
- 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
- 菜鸟入门【ASP.NET Core】7:WebHost的配置、 IHostEnvironment和 IApplicationLifetime介绍、dotnet watch run 和attach到进程调试
- 菜鸟入门【ASP.NET Core】12:JWT 设计解析及定制
- 菜鸟入门【ASP.NET Core】13:Individual authentication 模板、EF Core Migration
- ASP.NET Core的配置(5):配置的同步[设计篇]
- 基于元数据配置的asp.net数据库应用快速开发框架设计及实现
- 2.4配置的热更新「深入浅出ASP.NET Core系列」
- ASP.NET Core框架揭秘(持续更新中…)
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
- ASP.NET Core的身份认证框架IdentityServer4--(2)API跟WEB端配置
- 从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置
- 2.5配置的框架浅析「深入浅出ASP.NET Core系列」
- asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程
- 菜鸟入门【ASP.NET Core】8:Middleware管道介绍、自己动手构建RequestDelegate管道
- 【ASP.NET Core快速入门】(五)命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
- 菜鸟入门【ASP.NET Core】14:MVC开发:UI、 EF + Identity实现、注册实现、登陆实现
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
- 菜鸟入门【ASP.NET Core】9:RoutingMiddleware介绍以及MVC引入