将值存储在web.config中与const字段相比是否会导致性能损失?

3

我们的应用程序中目前有一个ApplicationConfiguration类。它基本上只是一个静态类,其中包含指定某些应用程序全局配置选项的const值。其中一些值很少或从不更改,并且仅放入配置以实现优雅/简洁。它当前硬编码为类似于100的内容,这对于所有实际应用程序都很好。

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

1个回答

1

Web.config的值在应用程序启动时被读入内存,并一直保留到应用程序结束。因此,在性能方面没有实际区别--没有额外的文件I/O反复读取web.config。

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

当然,要更改常量的值,您必须重新编译和部署代码。这可能并不是一项微不足道的工作。


重新部署对我们来说真的不是问题。我们可以在大约20-30分钟内完成完整的重新部署,而且我们的应用程序仅在美国工作时间(大约上午8点至下午6点)期间由某些人使用,因此我们有时间可以将应用程序脱机。这不是问题。 - Earlz
相对于在 web.config 中更改少于30秒的时间,这需要20-30分钟。还有一个风险是,在部署步骤中有一个出错了。但这是生产环境 - 可能需要发布(即部署)新版本才能进行任何更改。 - Lachlan
好的,对于这样的更改,你需要做的唯一事情就是重新上传网站的程序集文件,这对我来说只需要大约15秒钟在FireFTP中完成。 - Earlz
好的,这里的重点是,一般来说,两个选项之间的性能差异可以忽略不计,但部署的易用性和可靠性是另一个考虑因素。我认为我们正在探讨的问题是如何决定特定值应该是常量还是配置设置。我不愿意做出任何笼统的陈述,但一个可能的经验法则是,如果一个值是应用程序内部的,则作为常量是可以接受的;如果它涉及外部资源(例如数据库连接字符串),那么最好作为配置设置。 - Dr. Wily's Apprentice

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接