日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/4 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DotNetCore跨平台~配置文件与配置代码如何共存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

古人云《一山不容二虎》,而進行dotnet core時代之后,我們可以看到這樣的一些官方的DEMO,它將數據連接串和其它配置項都直接硬編碼在代碼里,即在startup中進行定義,試問你在生產環境如何兼容!當然,你會說,可以在對應appsettings里進行配置,說它是對應的appsettings,是因為dotnet core下的配置文件有環境的區分,一般使用以下名稱來表示不同的環境:

  • 開發環境,Development

  • 預發布環境,Staging

  • 生產環境,Production

  • 對于二者,配置文件和硬編碼配置如何進行選擇,如果兩者都設置了,那到底應該以誰為準呢?大叔認為,如果二者都設置了,那以配置文件為準,當配置文件沒有定義時,再以硬編碼配置為準,這就是他們的優先級,原因有下面幾點:

  • 硬編碼方便在開發環境去調試

  • 在指定運行環境后,配置文件根據環境的不同,選擇不同的配置

  • 優化級,配置文件?優于?硬編碼

  • 下面是倉儲服務在注冊時,選擇配置的策略,當然,你可以把這種邏輯做成一種裝飾,感覺更好。

    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文件進行加載!

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


    .NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

    總結

    以上是生活随笔為你收集整理的DotNetCore跨平台~配置文件与配置代码如何共存的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。