【问题标题】:Is there a performance penalty for storing values in the web.config compared to const fields?与 const 字段相比,在 web.config 中存储值是否存在性能损失?
【发布时间】:2010-08-25 19:20:25
【问题描述】:

目前在我们的应用程序中,我们有一个 ApplicationConfiguration 类。它基本上只是一个带有const 值的静态类,指定了某些应用程序全局配置选项。其中一些值很少会改变,并且只是为了优雅/清洁而放入配置中。 .它目前被硬编码为 100,这对所有实际应用都有好处。 -->

其中一些值在生产和开发之间确实需要不同。所以我正在考虑让这个类只是 Web.config 的一个包装器。在我们的代码库中多次检查这些值。如果我将这些从 const 更改为从 Web.config 读取的只读 getter,这会影响编译器优化或使我们的应用程序更慢吗?

【问题讨论】:

    标签: c# asp.net optimization web-config


    【解决方案1】:

    Web.config 值在应用启动时被读入内存,并一直保存到应用结束。所以,这里的性能并没有真正的区别——没有额外的文件 I/O 重复读取 web.config。

    当您需要更改其中一个配置选项的值时,这两种方法之间的一个关键区别就出现了。 更改 web.config 中的值相对容易,甚至可能不需要重新启动应用程序(取决于它的配置方式)。

    当然,要更改常量的值,您必须重新编译和重新部署代码。这可能不是一件小事。

    【讨论】:

    • 重新部署对我们来说真的不是问题。我们可以在大约 20-30 分钟内完成完全重新部署,并且我们的应用程序仅在美国工作时间(上午 8 点到下午 6 点左右)被某些人使用,因此我们有时间甚至可以使应用程序脱机。这不是问题。
    • 更改 web.config 需要 20 到 30 分钟,而更改 web.config 则需要
    • 好吧,您唯一需要做的就是重新上传网站的程序集文件,这对我来说在 FireFTP 中大约需要 15 秒。
    • 好的,这里的重点是,通常这两个选项之间的性能可以忽略不计,但部署的易用性和可靠性是不同的考虑因素。我认为我们要讨论的问题是如何决定一个特定的值应该是一个常量还是一个配置设置。我不愿做出任何笼统的陈述,但一个可能的经验法则是,如果一个值是应用程序内部的,那么它可以作为常量;如果它与外部资源(例如数据库连接字符串)有关,那么最好作为配置设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    相关资源
    最近更新 更多