【发布时间】:2013-06-21 12:25:41
【问题描述】:
最近我们了解了 IIS 的 AppDomain Recycling 以及它如何影响将静态变量设置为其主要值(null、0 等)。
我们使用一些在静态构造函数中初始化的静态变量(对于第一次初始化,配置值,如“小数位数”、“管理员电子邮件”等......从数据库中检索)然后只读取他们在网站执行过程中的价值。
解决这个问题的最佳方法是什么?一些可能的想法:
-
在每次检索时检查变量是否为 null/0(不喜欢它,因为可能会影响性能 + 将此检查添加到每个变量所花费的时间 + 添加到项目中的代码重载)
1234563 )
-
使用其他方式来保存这些变量(但我们认为,对于作为所有用户全局参考的信息的某些值,静态变量是性能/编码方面的最佳选择)
李> 订阅在这些 AppDomain Recycling 中触发的事件,以便我们可以重新初始化所有这些变量(如果无法阻止回收,这可能是最佳选择...)
想法?
【问题讨论】:
-
将它们封装为非静态类的公共 get-only 属性,作为依赖项传递到任何需要的地方?为什么它必须是静态的?
-
“在两种环境中都一样” - 不是真的,它们非常不同!在 winforms 中,每个用户都有他/她自己的应用程序实例和它自己的一组静态变量。这经常重新启动(每次用户结束应用程序时)。在网络表单中,有一个单独的应用程序用于所有请求,因此静态变量在所有用户之间共享。除了回收之外,该 web 应用程序将永远存在。
标签: c# asp.net variables iis static