远程配置参数

远程配置参数是指由 配置服务 统一管理的各种运行参数:

  • 全局配置参数
  • 数据库连接参数
  • 远程独立配置文件
  • 远程配置文件(xxx.App.config, xxx.Log.config)




获取全局配置参数

string xxkey = Settings.GetSetting("xx-key");

注意:

  • Settings 读取来源&优先级:环境变量 > 配置服务 > AppConfig
    • 不启用配置服务时,Settings 等同于 LocalSettings
    • LocalSettings 读取来源&优先级:环境变量 > AppConfig
  • 环境变量:它仅用于产生环境中以最高级别形式做特殊调整参数(覆盖性使用)

全局配置参数分类:

  • 公共参数:供多个应用使用(至少2个)
  • URL地址:内部服务,外部服务
  • 敏感信息数据
    • 连接类参数:RabbbitMQ/Redis/es/oss/...
    • 帐号类参数:邮箱帐号,IM应用帐号
    • 密码密钥类:登录密码,JWT密钥

定义要求

  • 建议参数值长度不超过 300 字符

命名要求

  • 要能体现出是使用的什么用途
  • 参数名称包含应用的名称(防止冲突)
  • 例如:Uranus_NotifyService_Rabbit




获取数据库连接参数

DbConfig config = DbConnManager.GetAppDbConfig("xx_Db");

以上代码虽然可以获取数据库连接参数,但它还不能执行数据库操作,
通常情况下可使用下面的代码来获取数据库连接(在Controller代码中):

using( DbContext dbContext = this.CreateAppDbConnection("xx_Db") ) {
    return await dbContext.CPQuery.Create("select now()").ExecuteScalarAsync<string>();
}

注意:

  • DbConnManager 既能读取 配置服务中的数据库连接,也能读取 AppConfig中定义的连接
    • 启用配置服务时,DbConnManager 从配置服务中获取连接参数
    • 当不启用配置服务时,DbConnManager 从 AppConfig 中读取




获取独立配置文件

string json =  ConfigFile.GetFile("xxxapp.filename.jon");
var config = json.FromJson<T>();

或者

string xml =  ConfigFile.GetFile("xxxapp.filename.xml");
var config = xml.FromXml<T>();

注意:

  • ConfigFile 既能读取 远程独立配置文件,也能读取 本地独立配置文件
  • ConfigFile 的读取优先级: 远程配置文件 > 本地独立配置文件
    • 当不启用配置服务时,ConfigFile 直接从本地目录中查找文件



独立配置文件适用场景:

  • 包含敏感信息,内容较大,例如:RSA密钥
  • 多个配置项之间关联紧密,例如:某个第三方组件的多个配置参数
  • 应用程序的配置参数结构复杂(嵌套结构),通常是一个XML/JSON/YAML文件




远程配置文件

ClownFish.App.config, ClownFish.Log.config 原本是各个应用项目中的本地配置文件, 为了方便线上及时调整它们的文件内容,
可以在配置服务的【配置文件】中新建一个名为 appname.App.Config, 将内容复制上去,以后就可以在线调整参数了。

appname 就是调用 AppStartup.RunAsXxxx(...) 的第一个参数

类似的方法,可将 ClownFish.Log.config 放给配置服务来管理,对应的名称:appname.Log.Config

说明:

  • 这2个特殊的配置文件由框架负责读取,不需要在代码中操作。
  • 远程的App.config中,并不是任何参数都可以在线调整,
    • 部分框架定义的参数在初始化期间就已读取,只能通过环境变量来修改。