重返目录

json,古人云《一山不容二虎》,而开展dotnet
core时期将来,我们得以看来那样的部分合法的DEMO,它将数据连接串和任何配置项都直接硬编码在代码里,即在startup中展开定义,试问你在生育条件怎么同盟!当然,你会说,可以在对应appsettings里展开安顿,说它是应和的appsettings,是因为dotnet
core下的布局文件有环境的区分,一般选择以下名称来代表差其他环境:

  1. 支出条件,Development
  2. 预发表环境,Staging
  3. 生产条件,Production

对于两岸,配置文件和硬编码配置哪些开展分选,假使两者都安装了,那终归应该以哪个人为准呢?四伯认为,假如两岸都设置了,那以安顿文件为准,当配置文件并未概念时,再以硬编码配置为准,那就是她们的优先级,原因有上面几点:

  1. 硬编码方便在开发环境去调节
  2. 在钦命运维条件后,配置文件依照条件的不等,选用不一致的安顿
  3. 优化级,配置文件 优于 硬编码

安顿文件大概是这么(Production和Staging环境),一般development不须要配置,直接写在代码里就行了,调试方便!

json 1

 程序中直接行使安插能够是那般(Development环境)

 json 2

基本的布局策略达成部分

下面是储存服务在注册时,选用安顿的国策,当然,你能够把那种逻辑做成一种装饰,感觉更好。

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文件进行加载!

多谢我们阅读!

回来目录

 

相关文章

网站地图xml地图