2011-03-03 86 views
2

我正在ASP.Net 4.0中构建一个Web应用程序,它必须保持用户之间共享的内存状态(更好地说在用户组之间)。它不是一个标准应用程序,只有在一组操作完成后(可能需要半小时),与一组用户相关的状态才能/可以/应该被保留。这个要求不能改变。Web应用程序和内存状态

据我所知,我不能依赖在进程内存,因为回收将清除我的状态。 我发现的唯一解决方案是创建一个标准的应用程序(或一个Windows服务),监控,可通过NamedPipe访问,它将存储所有信息。 (为了可靠性,我还将实现一个自定义回收,其中第一个处理仅在所有用户组都已完成其操作时终止)。

你知道任何简单的方法,或者一个可以帮助管理这种应用状态的库吗? 考虑到我期望高水平的并发访问状态,您对此设计有任何建议吗?

谢谢。

+0

将它存储在数据库中。 – 2011-03-03 01:35:56

回答

0

将会话数据存储在数据库中,并为需要共享数据的用户使用公共密钥。

但是,你说你不能使用数据库,它必须在内存中。我之后的第一个想法是做一些类似于你所描述的事情(使用Web应用程序调用的服务器上的独立应用程序)。您也可以通过利用缓存来实现您的目标,但我不能100%确定这一点。 http://msdn.microsoft.com/en-us/library/ms972379.aspx - 缓存文章

哦,主意!在服务器上创建一个临时XML文件以跟踪每个多用户会话,并在每个请求中加载/解析。但是,这仍然不在记忆中,所以也许这并不好。

HttpApplication生命周期不跨越多个用户。我对HttpApplicationState对象没有一点困惑:

[本文](http://msdn.microsoft.com/en-us/library/ms972109.aspx)说,它跨越到应用程序的每个用户。它基本上是一本字典。

我还认为您可能会从审阅ASP.NET应用程序生命周期中受益。我用作参考的文章是http://msdn.microsoft.com/en-us/library/ms178473.aspx。祝你好运,并让我们知道你最终做了什么

+0

不能使用DB,必须在内存中。 – SkyG 2011-03-03 09:37:58