我正在ASP.Net 4.0中构建一个Web应用程序,它必须维护用户之间共享的内存状态(更好地说是在用户组之间)。它不是标准应用程序,只有在完成一组操作(可能需要半小时)后,才能/可以/应该保持与一组用户相关的状态。此要求无法更改。
据我所知,我不能依赖于进程内存,因为回收将清除我的状态。 我找到的唯一解决方案是创建一个标准应用程序(或Windows服务),通过NamedPipe监控,可访问,它将存储所有信息。 (为了可靠性,我还将实现一个自定义回收,只有在所有用户组完成其操作后才终止第一个进程。)
您知道更简单的方法,还是可以帮助管理此应用程序状态的库? 考虑到我期望高水平的并发访问状态,你对这个设计有什么建议吗?
感谢。
答案 0 :(得分: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。祝你好运,让我们知道你最终在做什么