分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

DotNetCore跨平台~配置文件与配置代码如何共存

发布时间:2023-09-06 01:17责任编辑:郭大石关键词:配置

回到目录

古人云《一山不容二虎》,而进行dotnet core时代之后,我们可以看到这样的一些官方的DEMO,它将数据连接串和其它配置项都直接硬编码在代码里,即在startup中进行定义,试问你在生产环境如何兼容!当然,你会说,可以在对应appsettings里进行配置,说它是对应的appsettings,是因为dotnet core下的配置文件有环境的区分,一般使用以下名称来表示不同的环境:

  1. 开发环境,Development
  2. 预发布环境,Staging
  3. 生产环境,Production

对于二者,配置文件和硬编码配置如何进行选择,如果两者都设置了,那到底应该以谁为准呢?大叔认为,如果二者都设置了,那以配置文件为准,当配置文件没有定义时,再以硬编码配置为准,这就是他们的优先级,原因有下面几点:

  1. 硬编码方便在开发环境去调试
  2. 在指定运行环境后,配置文件根据环境的不同,选择不同的配置
  3. 优化级,配置文件 优于 硬编码

下面是仓储服务在注册时,选择配置的策略,当然,你可以把这种逻辑做成一种装饰,感觉更好。

public class EFOptionsExtension : ILindOptionsExtension ???{ ???????private readonly Action<RepositoryOptions> _configure; ???????public EFOptionsExtension(Action<RepositoryOptions> configure) ???????{ ???????????_configure = configure; ???????} ???????public void AddServices(IServiceCollection services) ???????{ ???????????var options = new EFOptions(); ???????????_configure?.Invoke(options);//装饰 ???????????if (oConfigFileHelper.Get<EFOptions>().ConnString != null) //配置文件优先硬编码 ???????????{ ???????????????options.ConnString = ConfigFileHelper.Get<EFOptions>().ConnString; ???????????} ???????????if (ConfigFileHelper.Get<EFOptions>().DbType != DbType.None) ???????????{ ???????????????options.DbType = ConfigFileHelper.Get<EFOptions>().DbType; ???????????} ???????????services.AddSingleton<ILogger, FileLogger>();//日志 ???????????services.AddSingleton(options);//ef配置 ???????????services.AddTransient(typeof(DbContext), options.DbContextType);//注册数据上下文,实例模式 ???????????services.AddTransient(typeof(IRepository<>), typeof(EFRepository<>));//注册数据仓储 ???????} ???}

在我们进行发布之后,一般把dotnet core发布到linux或者直接放在docker容器里运行,这时只要设置对应的环境变量即可,非常方便!

ENV ASPNETCORE_ENVIRONMENT="Production"

设置完成后,dotnet core会自己选择对应的appsettings.Production.json文件进行加载!

感谢咱们阅读!

回到目录

DotNetCore跨平台~配置文件与配置代码如何共存

原文地址:http://www.cnblogs.com/lori/p/7663708.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved