因此,我总是在需要时使用会话变量(例如,将用户表单数据从一个注册表步骤保存到另一个注册表步骤)。
有人告诉我,web应用程序应该始终是无状态的,会话变量的问题是访问web应用程序的用户越多,web服务器的内存就会越多,这最终会破坏应用程序的可伸缩性。
我想知道的是,现在使用了哪些替代方案来将用户与其数据进行耦合。在我的例子中,我有一个包含4个独立步骤的注册表表单的应用程序,我希望允许用户继续他们离开的注册表进程。
预先感谢所有回答的人。
发布于 2018-03-31 15:11:54
在我们的应用程序中,我们将所有用户状态数据保存到数据库中,以允许用户返回到他们停止的地方。如果将信息保存在会话中,则当用户注销或关闭浏览器窗口时,会话变量可能会丢失。
为了便于使用,我们创建了一个UserStateManager类。它的工作原理如下
您应该允许将任何数据类型保存为“数据对象”。这可以是值类型或类对象。
发布于 2018-03-31 17:47:56
最后,要提供“持久性”(又称“会话”)的任何定义,您必须使用某种存储机制。
- obviously whatever you store here will be accessible to the client, so caveat emptor (nothing sensistive, don't trust blindly, validate!).
您可以在以上两种方法的基础上提出更多,并使用完全不同的东西(例如,一些外部存储服务),但是您必须自己管理它(使用相同的概念--例如CRUD、过期、验证等)。
Hth。
https://stackoverflow.com/questions/49588480
复制相似问题