十五、配置管理
可动态配置功能是一个可持续拓展的系统应用必备技能。
什么是配置
简单来说,配置就是将系统应用可动态调配的选项放在统一地方管理。
如何配置
在 asp.net core 应用程序中,通常配置都是存放在 .json 文件中,在Hoa Framework 中,建议存放在 Hoa.Web.Host.appsetting.json 中,当然也是 asp.net core 建议方式。
在 .json 文件配置中的所有 键 必须采用双引号包裹。如:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}读取配置的方式
直接通过
IConfiguration读取通过选项方式载入配置文件,实现热更新(推荐)
框架内置快捷读取
直接读取
直接读取 appsetting.json 配置信息主要是通过 IConfiguration 实例对象来读取,可通过构造函数注入:
假设 appsetting.json 中有一个 Person 配置节点:
读取具体的键值只需要通过 : 语法即可,如:{键名称}:{下一级键名称}:{下下一级键名称}...
更多直接读取配置信息方式可查看官方文档。
选项模式
选项模式是 asp.net core 推荐的动态读取配置的方式,这种方式将配置文件数据用一个强类型来托管,能够实现默认值设置,动态热加载等等功能。
针对上述的 Person 配置,我们需要创建一个一一对应的强类型 PersonOptions :
接下来,我们只需要 Hoa.Web.Core.ServiceExtensions.HoaConfigurationInitiateExtension.cs配置即可,如:
这样我们便可以在构造函数中注入使用了
关于选项模式可查看官方文档。
内置便捷选项读取
为了快速开发,Hoa Framework 内置了一些预设的选项读取属性,如:
AppGlobal.AppConfigOptions:获取全局配置信息,对应appsetting.json中的AppConfingOptions节点。AppGlobal.CorsConfigOptions:获取跨域配置信息,对应appsetting.json中的CorsConfigOptions节点。AppGlobal.SwaggerOptions:获取Swagger配置信息,对应appsetting.json中的HoaSwaggerOptions节点。AppGlobal.JwtOptions:获取JWT配置信息,对应appsetting.json中的HoaJwtOptions节点。
除此之外,框架还提供了 AppGlobal.Configuration 属性,可以免构造函数注入方式获取配置信息,如:
内置配置说明
Hoa Framework 框架默认提供一些应用配置需求,相关配置在 Hoa.Web.Host 项目下的 appsetting.json 中:
节点配置说明
ConnectionStrings:数据库连接字符串配置选项,支持多个连接字符串配置HoaDatabase:框架默认数据库连接字符串名称
AppConfigOptions:应用全局配置选项EnableGlobalAuthorizationFilter:是否启用全局授权过滤器,默认false,设置为true后,所有的WebApi都需授权才能访问EnableGlobalUnifiedResultFilter:是否启用全局规范化返回接口,默认true,设置为false后,直接返回不统一的结果,建议设置为trueEnableCorsSupport:是否启用跨域支持,默认false,设置为true后,需配置CorsConfigOptions选项EnableGlobalPerformanceAnalysis:是否启用全局性能分析器,默认true,设置为false后,不再显示详细的性能分析,建议部署上线后设置为falseEnableTenantMode:是否启用Saas多租户模式,默认为false
CorsConfigOptions:跨域配置选项PolicyName:策略名称Origins:允许来源配置,string[]类型
HoaJwtOptions:Jwt授权配置选项HeaderKey:授权检查请求报文头 Headers 名称,默认为AuthorizationSecurityKey:Jwt Token 校验所需密钥,建议长度在 16 位以上Audience:Jwt 接受授权的一方,通常为客户端信息Issuer:Jwt 签发方AuthorizationClassify:实现多系统权限控制 Jwt Claim 标识ClockSkewSeconds:Jwt 有效生命周期的容错值,单位为秒,默认30sExpiredTime:Jwt Token过期时间,单位分钟,默认20分钟
HoaSwaggerOptions:Swagger 文档配置选项DocumentTitle:文档标题SecurityDefinitionName:授权Schema,系统基于Jwt授权,所以是BearerUnclassifiedName:默认文档名称IsShowMSTestSummary:是否启用汇总单元测试类Groups:多个版本API配置信息,支持多个动态配置,Key 为版本名称Default:版本名称Title:API标题Description:描述TermsOfService合约地址Contact:联系信息Name:联系人名称Email:联系人邮箱Url:联系人主页
License:协议Name:协议名称Url:协议地址
最后更新于
这有帮助吗?