Reinvent the wheel 重新造轮子=> 价值是是什么?对于程序员而言,一定要有自己造轮子的能力。
从学习这到创造者!
项目实战1:开发web.config提供者
FxConfigurationProvider
- 为项目添加Nuget包,Microsoft.Extensions.Configuration和Microsoft.Extensions.Configuration.FileExtensions
- 创建类FxConfigProvider,继承自FileConfigurationProvider抽象类
- 重写Load方法,其中Stream是文件流,从FileConfigurationSource中获取返回信息。
- 在Load方法中将字符串拍平,通常的格式是“{第一级名称}:第二级名称”作为键,第二级名称作为值,对应起来,如下图:
FxConfigurationSource
同时在FxConfigurationProvider复写方法Load中,最后需要添加this.Data = data,将生成的字典赋值给它。
项目实战2:数据库配置提供者
中心化配置服务器
- 安装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登录问题解决。
- 配置数据库,登录进去后,建库建表,表三个字段:ID(自增主键),Name,Value。
ID设置:设置主键—是标识(双击即可)
- 将配置信息写入数据库中,Value支持Json格式
- 将Json映射成C#类
安装Nuget程序包:https://www.nuget.org/packages/Zack.AnyDBConfigProvider/
Install-Package Zack.AnyDBConfigProvider -Version 1.1.3
Install-Package System.Data.SqlClient -Version 4.8.2
代码中调用:
string strConfigFromSqlserver = "Server=192.168.0.238;Database=AlbertXDataBase;Trusted_Connection=True;";
configurationBuilder.AddDbConfiguration(() => new SqlConnection(strConfigFromSqlserver),
reloadOnChange: true,
reloadInterval: TimeSpan.FromSeconds(2));