【问题标题】:Store Dictionary object in ApplicationState Vs putting it in Web.config在 ApplicationState 中存储 Dictionary 对象与将其放在 Web.config 中
【发布时间】:2011-10-25 02:25:39
【问题描述】:

我需要在我的 asp .net 应用程序中存储一个字典。这个字典基本上是键(字符串)到值(字符串)的直接映射。在应用程序的生命周期中,字典不会改变,并且将包含大约 10 个元素。

我将遍历从存储过程返回的可能数千行,并从该字典中获取相应的值。

解决这个问题的最佳方法是什么?以下是我实现它的两个想法:

  1. 在 Application_Start 期间实例化和初始化字典并将其存储在 ApplicationState 对象中。

或者……

  1. 按照他们的建议去做:How do I store a dictionary object in my web.config file?

我喜欢选项 2,因为将来添加一个新值只是在 Web.Config 中添加一个条目而无需任何代码更改,但我担心性能,因为我必须为每个单独的值获取一个值从存储过程返回的行。

我想知道 web.config 中的这些查找是否以某种方式优化/缓存?

【问题讨论】:

  • web.config 被加载到内存中,所以基本上这两个选项都反对相同的性能

标签: c# asp.net performance web-config application-state


【解决方案1】:

如果您使用ConfigurationManager 访问AppSettings 值,则这些值在第一次被访问后被缓存。所以当你第一次访问ConfigurationManager.AppSettings["MyValue"] 时,它是从磁盘读取的,然后是从缓存中读取的。

【讨论】:

  • 谢谢你,乔尔。我会选择我的第二个选项。
【解决方案2】:

为什么不把它混合一下。在 Application_Start 上,将您的 web.config 值加载到字典中。那么你仍然可以在不更改代码的情况下配置列表,并且你的代码可以轻松引用字典

编辑:当然,这里的缺点是列表只会在您重新启动网站时刷新(即导致 Application_Start 再次触发),当您修改 web.config 文件时,直接配置文件将允许更多即时结果.也许这就是选择 web.config 选项的原因

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多