代码之家  ›  专栏  ›  技术社区  ›  Enrico Massone

是否建议在.NET核心中使用app.config和configurationmanager?

  •  3
  • Enrico Massone  · 技术社区  · 6 年前

    我们正在将一些.NET应用程序从完整的框架迁移到.NET核心,我们正在尝试找到实现这一点的最佳方法。

    其中一个主要变化是与应用程序配置方式相关的变化。在.NET完整框架中,我们将应用程序设置放在app.config文件中,并通过 ConfigurationManager class .

    我知道.NET核心支持基于nuget包的新配置系统 Microsoft.Extensions.Configuration 以及配置源的各种包。但是,与此同时,微软通过nuget包将对configurationmanager类的支持扩展到了.NET核心。 System.Configuration.ConfigurationManager .

    以下是我的问题:

    • 配置.NET核心应用程序的最佳实践是什么?
    • 对app.config文件的支持只是为了向后兼容而实现的,这样移植到.NET核心的遗留应用程序就更容易了,或者它被认为是一种最佳实践,将来还会维护它?
    1 回复  |  直到 6 年前
        1
  •  3
  •   Greg    6 年前

    一些历史,最初开始缩小.NET应用程序中包含的依赖项的团队是ASP.NET团队。与更模块化的框架相比,微软的Web框架过于膨胀,导致请求延迟。据斯科特·汉斯曼所说,他经常在演讲中讲这个笑话:

    这里谁用.NET开发?三十岁以下的人都没有,太棒了!那么怎么办呢? 我们要对抗这个?成为模块化、更快、跨平台、更容易 开始吧。否则你就走了,我想学着编码。 下载Visual Studio,四小时后写“你好世界”。

    因此,Web团队开始了这种转换,对于Web来说,这使得JavaScript对象表示法比扩展标记语言成为更好的选择。但在ASP.NET团队进行这些修改后的一年内,微软将其组织结构重组为一个.NET。他们意识到这些变化不仅仅会在ASP.NET团队中层叠。较旧的项目类型将不兼容或不能使用JavaScript对象表示法,因此它们转换回.csproj和其他配置类型的扩展标记。但是很多开发人员非常喜欢javascript对象符号文件的设置,它们更小、更清晰,而且没有那么冗长。所以微软又通过 Microsoft.Extensions.Configuration 给你灵活性。

    • 主要目的是为了向后兼容。
    • 确保它也针对任何.NET标准应用程序进行了更新。

    所以你也可以利用它们。除了扩展标记之外,没有真正的好处,与JavaScript对象相比,读取和冗长的标记往往非常繁琐。Javascript对象表示法往往更简单。