zoukankan      html  css  js  c++  java
  • 2.4配置的热更新「深入浅出ASP.NET Core系列」

    希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。

    大家知道通常我们修改网站的配置文件比如,webconfig的时候,网站需要重启才能读取到最新的修改,所谓热更新就是网站无需重启,修改完配置文件,直接F5就可以看到效果如下图所示:

    2.4配置的热更新「深入浅出ASP.NET Core系列」

     

    修改IOption为IOptionsSnapshot

    2.4配置的热更新「深入浅出ASP.NET Core系列」

     

    上一节当中我们使用IOption来作为注入,这次我们改成IOptionSnapshot,注意如果我们是在Controller里也是一样的,见下图

    2.4配置的热更新「深入浅出ASP.NET Core系列」

     

    修改为IOptionsSnapshot后,即可达到热更新,非常简单。

    内部机制

    我们来看下ASP.NET Core内部是如何做到的?

    2.4配置的热更新「深入浅出ASP.NET Core系列」

     

    如上图所示,我们增加了一行代码:

    builder.AddJsonFile("appsettings.json", false, true);

    这里我们重写并覆盖了WebHost内部的CreateDefaultBuilder方法,并且设置了两个bool型参数,其实我们也可以不做重写,也就是上面的代码注释掉

    2.4配置的热更新「深入浅出ASP.NET Core系列」

     

    一样能达到热更新的目的。

    那么,到底WebHost这个静态方法内部做了哪些工作,我们一起访问下面源码连接:https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs,看下内部都做了些什么。

    找到函数CreateDefaultBuilder

    2.4配置的热更新「深入浅出ASP.NET Core系列」

     

    我们看到关键代码:

    config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)

    其中optional和reloadOnChange默认为true,这就是问题的关键,内部已经另起进程,自动帮我们做配置改变的事件监听了,这就是不做重写覆盖一样能达到热更新的目的所在。

    覆盖的目的是,我们有时候配置文件不一定都写在appsettings.json里面,有可能写在自定义的配置文件罢了。

    我是.NET架构师张飞洪,入行10年有余,人不堪其忧,吾不改其乐,谢谢您的关注。

  • 相关阅读:
    【纯水题】POJ 1852 Ants
    【树形DP】BZOJ 1131 Sta
    【不知道怎么分类】HDU
    【树形DP】CF 1293E Xenon's Attack on the Gangs
    【贪心算法】CF Emergency Evacuation
    【思维】UVA 11300 Spreading the Wealth
    【树形DP】NOI2003 逃学的小孩
    【树形DP】BZOJ 3829 Farmcraft
    【树形DP】JSOI BZOJ4472 salesman
    【迷宫问题】CodeForces 1292A A NEKO's Maze Game
  • 原文地址:https://www.cnblogs.com/alligator/p/9879851.html
Copyright © 2011-2022 走看看