【问题标题】:Making .NET configuration environment-neutral使 .NET 配置环境中立
【发布时间】:2010-12-13 05:29:29
【问题描述】:

我想了解一些关于使 .NET 应用程序配置环境中立的最佳实践。

背景。首先是一些背景。我来自 Java 世界,而不是 .NET 世界,在 Java 中,我们可以做一些事情来构建环境中立的包。它们通常基于以某种方式抽象配置。以下是几个例子:

  • JNDI 允许应用程序通过名称引用企业资源(例如,数据库、JavaMail 会话、JCR 存储库等),然后根据环境(dev、test、prod)将该名称映射到特定的配置。
  • 另一个例子是属性文件。当应用程序启动时,应用程序可能会从已知位置的属性文件中获取一系列属性(例如,“encryption_key”、“smtp.server.url”、“admin.email”等)。属性键再次根据环境映射到不同的值。
  • 一些应用程序开发框架(如 Spring)知道如何将属性文件拉入,以便将属性与框架配置集成。

我在 Java 中看到的另一种方法是构建时方法,您可以使用 Ant(令牌替换)或 Maven(构建配置文件)来构建特定于环境的包。我不太喜欢这种方法,因为我非常喜欢部署完全相同的包来测试和生产。但这是我见过的一种方法。

所需的解决方案。我假设在 .NET 中有一些类似的策略可以将配置(以及扩展包含的包)与其环境分离。

理想情况下,我想要一个解决方案,使我能够将非环境配置与应用程序紧密关联,仅将环境内容外部化。回到 Java 示例,很多时候“配置”实际上是开发人员控制的东西,例如包含用于页面装饰的 Sitemesh servlet 过滤器、依赖注入或应用程序连接、映射某某 MVC 控制器方法到请求 URI 等。我不想被外部化的东西。但是加密密钥、数据库连接字符串、日志级别等等,是的。

【问题讨论】:

    标签: .net deployment configuration jndi packaging


    【解决方案1】:

    .NET 可执行文件和 Web 应用程序默认实现完全符合您描述的 .config 文件。有一个完整的命名空间 System.Configuration 用于处理 .config 文件。

    去寻找关于 App.config 和 Web.config 的参考资料。 App.config 是可执行文件的默认配置文件的通用术语,名为 foo.exe.config,其中 foo.exe 是可执行文件的名称。 Web.config 适用于 Web 应用程序。

    This seems to be a decent primer on App.config.

    【讨论】:

      猜你喜欢
      • 2018-02-12
      • 1970-01-01
      • 2020-02-13
      • 2019-02-03
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      相关资源
      最近更新 更多