Reinvent the wheel 重新造轮子=> 价值是是什么?对于程序员而言,一定要有自己造轮子的能力。
从学习这到创造者!
image.png

项目实战1:开发web.config提供者

FxConfigurationProvider

  1. 为项目添加Nuget包,Microsoft.Extensions.Configuration和Microsoft.Extensions.Configuration.FileExtensions
  2. 创建类FxConfigProvider,继承自FileConfigurationProvider抽象类
  3. 重写Load方法,其中Stream是文件流,从FileConfigurationSource中获取返回信息。image.png
  4. 在Load方法中将字符串拍平,通常的格式是“{第一级名称}:第二级名称”作为键,第二级名称作为值,对应起来,如下图:

image.png

FxConfigurationSource

image.png
同时在FxConfigurationProvider复写方法Load中,最后需要添加this.Data = data,将生成的字典赋值给它。

项目实战2:数据库配置提供者

中心化配置服务器
image.png

  1. 安装Sql Server:前往官网安装:https://www.microsoft.com/en-us/sql-server/sql-server-downloads

安装Developer或者基于云的,本机安装SSMS(https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15)进行数据库管理。验证数据库是否可以进行IP登录,如果不能按照如下配置并尝试关闭防火墙:数据库无法以IP登录问题解决

  1. 配置数据库,登录进去后,建库建表,表三个字段:ID(自增主键),Name,Value。

ID设置:设置主键—是标识(双击即可)
image.png
image.png

  1. 将配置信息写入数据库中,Value支持Json格式

image.png

  1. 将Json映射成C#类

image.png

  1. 安装Nuget程序包:https://www.nuget.org/packages/Zack.AnyDBConfigProvider/

    1. Install-Package Zack.AnyDBConfigProvider -Version 1.1.3
    2. Install-Package System.Data.SqlClient -Version 4.8.2
  2. 代码中调用:

    1. string strConfigFromSqlserver = "Server=192.168.0.238;Database=AlbertXDataBase;Trusted_Connection=True;";
    2. configurationBuilder.AddDbConfiguration(() => new SqlConnection(strConfigFromSqlserver),
    3. reloadOnChange: true,
    4. reloadInterval: TimeSpan.FromSeconds(2));