十五、配置管理
可动态配置功能是一个可持续拓展的系统应用必备技能。
什么是配置
简单来说,配置就是将系统应用可动态调配的选项放在统一地方管理。
如何配置
在 asp.net core 应用程序中,通常配置都是存放在 .json
文件中,在Hoa Framework 中,建议存放在 Hoa.Web.Host.appsetting.json
中,当然也是 asp.net core 建议方式。
在 .json
文件配置中的所有 键
必须采用双引号包裹。如:
读取配置的方式
直接通过
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
后,直接返回不统一的结果,建议设置为true
EnableCorsSupport
:是否启用跨域支持,默认false
,设置为true
后,需配置CorsConfigOptions
选项EnableGlobalPerformanceAnalysis
:是否启用全局性能分析器,默认true
,设置为false
后,不再显示详细的性能分析,建议部署上线后设置为false
EnableTenantMode
:是否启用Saas多租户模式,默认为false
CorsConfigOptions
:跨域配置选项PolicyName
:策略名称Origins
:允许来源配置,string[]类型
HoaJwtOptions
:Jwt授权配置选项HeaderKey
:授权检查请求报文头 Headers 名称,默认为Authorization
SecurityKey
:Jwt Token 校验所需密钥,建议长度在 16 位以上Audience
:Jwt 接受授权的一方,通常为客户端信息Issuer
:Jwt 签发方AuthorizationClassify
:实现多系统权限控制 Jwt Claim 标识ClockSkewSeconds
:Jwt 有效生命周期的容错值,单位为秒,默认30sExpiredTime
:Jwt Token过期时间,单位分钟,默认20分钟
HoaSwaggerOptions
:Swagger 文档配置选项DocumentTitle
:文档标题SecurityDefinitionName
:授权Schema
,系统基于Jwt授权,所以是Bearer
UnclassifiedName
:默认文档名称IsShowMSTestSummary
:是否启用汇总单元测试类Groups
:多个版本API配置信息,支持多个动态配置,Key 为版本名称Default
:版本名称Title
:API标题Description
:描述TermsOfService
合约地址Contact
:联系信息Name
:联系人名称Email
:联系人邮箱Url
:联系人主页
License
:协议Name
:协议名称Url
:协议地址
最后更新于