YiShaAdmin配置管理:appsettings.json与动态配置中心
【免费下载链接】YiShaAdmin 基于 .*** Core MVC 的权限管理系统,代码易读易懂、界面简洁美观 项目地址: https://gitcode.***/GitHub_Trending/yi/YiShaAdmin
在基于.*** Core MVC的权限管理系统YiShaAdmin中,配置管理是系统运行的基础。本文将详细介绍YiShaAdmin的配置体系,包括静态配置文件appsettings.json的结构与使用,以及动态配置中心的实现方式,帮助用户轻松掌握系统配置的管理技巧。
静态配置基石:appsettings.json
appsettings.json作为YiShaAdmin的核心配置文件,存储了系统运行所需的基础参数。通过读取该文件,系统可以获取数据库连接、缓存设置、日志级别等关键信息。
文件路径与基本结构
YiShaAdmin的appsettings.json位于Web项目根目录下,具体路径为:YiSha.Web/YiSha.Admin.Web/appsettings.json。该文件采用JSON格式,主要包含Logging、AllowedHosts和SystemConfig三个一级节点。
核心配置项解析
SystemConfig节点是系统配置的核心,包含了数据库连接、缓存设置、登录配置等关键信息。以下是部分重要配置项的说明:
- 数据库配置:通过DBProvider指定数据库类型(如SqlServer),DBConnectionString设置连接字符串,DB***mandTimeout定义数据库操作超时时间(单位:秒)。
- 缓存设置:CacheProvider指定缓存使用方式(Memory或Redis),当选择Redis时,需通过RedisConnectionString配置Redis服务器地址。
- 登录配置:LoginMultiple控制是否允许一个账户在多处登录,LoginProvider指定登录信息保存方式(Cookie、Session或WebApi)。
配置示例
以下是appsettings.json中SystemConfig节点的部分配置示例:
"SystemConfig": {
"Demo": false, // 是否是演示模式
"LoginMultiple": true, // 是否允许一个账户在多处登录
"LoginProvider": "Cookie", // 登录信息保存方式 Cookie Session WebApi
"SnowFlakeWorkerId": 1, // SnowFlake 节点序号
"ApiSite": "http://localhost:5001", // Api地址,例如可以上传文件到Api
"VirtualDirectory": "/admin", // 虚拟目录
"DBProvider": "SqlServer",
"DBConnectionString": "Server=localhost;User Id=sa;Password=hmAdmin@;Database=YsData;",
"DB***mandTimeout": 180, // 数据库超时时间,单位秒
"DBBackup": "", // 数据库备份路径
"CacheProvider": "Memory", // 缓存使用方式 Memory Redis
"RedisConnectionString": "127.0.0.1:6379"
}
动态配置中心:数据字典与定时任务
除了静态配置文件,YiShaAdmin还提供了动态配置中心,允许用户在系统运行时动态管理配置信息。动态配置主要通过数据字典和定时任务两大模块实现。
数据字典管理
数据字典(DataDict)用于管理系统中的各类静态数据,如下拉框选项、状态码等。通过数据字典,用户可以在不修改代码的情况下,动态增删改查各类业务数据。
数据字典业务逻辑
数据字典的业务逻辑主要由DataDictBLL类实现,位于YiSha.Business/YiSha.Business/SystemManage/DataDictBLL.cs。该类提供了数据字典的查询、保存、删除等操作,并通过缓存机制提高查询性能。
例如,GetDataDictList方法用于获取所有数据字典及其明细信息,并将结果缓存起来,减少数据库访问次数:
public async Task<TData<List<DataDictInfo>>> GetDataDictList()
{
TData<List<DataDictInfo>> obj = new TData<List<DataDictInfo>>();
List<DataDictEntity> dataDictList = await dataDictCache.GetList();
List<DataDictDetailEntity> dataDictDetailList = await dataDictDetailCache.GetList();
// ... 数据处理逻辑 ...
obj.Data = dataDictInfoList;
obj.Tag = 1;
return obj;
}
数据字典缓存
数据字典使用了缓存机制,通过DataDictCache和DataDictDetailCache类管理缓存数据。当数据字典发生变更时,系统会自动清除缓存,确保下次查询获取最新数据。
定时任务配置
定时任务(AutoJob)允许用户在系统中配置周期性执行的任务,如数据备份、日志清理等。通过动态配置定时任务,可以灵活地满足系统的自动化需求。
定时任务业务逻辑
定时任务的业务逻辑由AutoJobBLL类实现,位于YiSha.Business/YiSha.Business/SystemManage/AutoJobBLL.cs。该类提供了任务的创建、修改、删除、启动和暂停等操作。
例如,ChangeJobStatus方法用于修改任务状态(启动或暂停),并将状态变更保存到数据库:
public async Task<TData> ChangeJobStatus(AutoJobEntity entity)
{
TData obj = new TData();
await autoJobService.SaveForm(entity);
obj.Tag = 1;
return obj;
}
任务状态管理
定时任务的状态(启动/暂停)通过JobStatus字段控制。在删除任务时,系统会检查任务状态,确保只有处于暂停状态的任务才能被删除:
public async Task<TData> DeleteForm(string ids)
{
TData<long> obj = new TData<long>();
foreach (long id in TextHelper.SplitToArray<long>(ids, ','))
{
AutoJobEntity dbEntity = await autoJobService.GetEntity(id);
if (dbEntity.JobStatus == StatusEnum.Yes.ParseToInt())
{
obj.Message = "请先暂停 " + dbEntity.JobName + " 定时任务";
return obj;
}
}
await autoJobService.DeleteForm(ids);
obj.Tag = 1;
return obj;
}
配置管理最佳实践
静态配置与动态配置的结合
静态配置(appsettings.json)适用于系统运行的基础参数,如数据库连接、缓存服务器地址等,这些参数通常在系统部署时确定,变更频率较低。动态配置(数据字典、定时任务)则适用于业务相关的配置,如业务参数、周期性任务等,这些配置需要根据业务需求灵活调整。
配置缓存策略
对于频繁访问的配置信息(如数据字典),建议使用缓存机制提高系统性能。YiShaAdmin中数据字典的查询结果会被缓存,当配置发生变更时,系统会自动清除缓存,确保数据的一致性。
配置安全
- 敏感配置(如数据库连接字符串)应避免明文存储,建议使用加密方式或环境变量进行管理。
- 定期备份appsettings.json文件,以防配置文件损坏或丢失。
通过合理使用静态配置文件和动态配置中心,可以充分发挥YiShaAdmin的灵活性和可扩展性,满足不同场景下的配置需求。掌握这些配置管理技巧,将有助于更好地维护和优化YiShaAdmin系统。
【免费下载链接】YiShaAdmin 基于 .*** Core MVC 的权限管理系统,代码易读易懂、界面简洁美观 项目地址: https://gitcode.***/GitHub_Trending/yi/YiShaAdmin