ASP.Net应用程序中处理全局变量的最佳方法是什么?

4
对于我的全局变量和数据,我在使用HttpApplicationState或Static变量时陷入了困境 - 哪种方法最好?
这篇文章指出应该使用静态变量而不是HttpApplicationState: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312607 然而,我喜欢HttpApplicationState(以及System.Web.Caching.Cache)的一点是可以轻松枚举条目并选择要删除的项(我为此创建了一个全局CacheManager.axd),而我认为使用Static变量没有简单的方法(即使有也不清楚如何“重新初始化”它们),除非重新启动应用程序池。
对于处理和管理全局对象,有什么好的通用方法建议吗?
谢谢,马克。
2个回答

1

你的直觉是正确的。使用System.Web.Caching。内置的缓存管理会处理所有与内存分配和过期陈旧或低优先级对象有关的繁重工作。

确保为缓存键使用命名约定,以便在未来能够理解。如果您开始大量依赖缓存,则需要能够按名称针对/过滤不同的缓存键。


0
作为一般惯例,在 Web 应用程序中尽可能避免使用全局状态是一个好习惯。ASP.NET 是多线程环境,可以并行处理多个请求。除非您的全局状态是不可变的(readonly),否则您将不得不处理管理共享可变状态所面临的挑战。
如果您的共享状态是不可变的,并且您不需要枚举它,那么静态变量就没有问题。
如果您的共享状态是易失性/可变的,那么您可能希望在选定存储数据的底层机制之上创建一个抽象,以确保访问和修改共享状态是一致的,并符合消费代码的预期。我可能会在这样的设计中使用系统缓存,以便利用缓存服务内置的到期和依赖性功能(如果必要)。

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