【问题标题】:Web Application and In-Memory StateWeb 应用程序和内存状态
【发布时间】:2011-03-03 00:57:18
【问题描述】:

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

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

您知道任何更简单的方法,或者可以帮助管理此应用程序状态的库吗? 考虑到我期望对状态的高级别并发访问,您对此设计有什么建议吗?

谢谢。

【问题讨论】:

    标签: asp.net session memory-management ipc state


    【解决方案1】:

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

    但是,你说你不能使用数据库,它必须在内存中。在那之后我的第一个想法是做一些你所描述的事情(在 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。祝你好运,让我们知道你最终做了什么

    【讨论】:

    • 不能使用数据库,必须在内存中。
    猜你喜欢
    • 2015-10-30
    • 2018-09-05
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    相关资源
    最近更新 更多