0

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

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

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

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

或者 ...

  1. 按照他们的建议去做:如何在我的 web.config 文件中存储字典对象?

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

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

4

2 回答 2

2

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

于 2011-08-11T15:26:29.303 回答
0

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

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

于 2011-08-11T15:27:33.983 回答