共享的全局对象实例 - 他们应该在哪里生活"?

时间:2015-01-25 16:42:22

标签: asp.net asp.net-web-api

在您真正想要一个对象的单个实例,通过所有请求共享和持久化的实例中存在哪些选项?

我目前的结论是,我必须实现Singleton模式 - 因此静态访问此对象,使用一些小心锁定,否则只需确保服务器只运行一个工作进程。

我错过了什么吗? ASP.Net是否对这类事情做出了特定的补贴?

上下文; 我有一个应用程序,它可以作为存储在内存中的大量数据的前端(它是一个游戏;所以数据是正在进行的许多游戏的游戏状态)。游戏是短暂的,因此将它们保存在内存中似乎更有意义的是将数据序列化到任何地方,但我需要一些静态的注册表"对于数据。

1 个答案:

答案 0 :(得分:1)

您可以使用Application collection从任何用户访问对象。但是,在您的情况下,它不会简化太多。你不需要一个单例,但需要类似的代码来访问它,你仍然需要同步访问。

考虑到如果应用程序被回收(默认情况下每天都是这样),所有当前游戏都将消失,您可能还会考虑是否真的想要将所有内容保留在内存中。您可能希望将状态保持在较不易变的地方,并且只在内存中保留副本以便快速访问。那么Cache class就会引起人们的兴趣。