首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET - C#中会话变量的替代方案

ASP.NET - C#中会话变量的替代方案
EN

Stack Overflow用户
提问于 2018-03-31 13:50:29
回答 2查看 2.8K关注 0票数 0

因此,我总是在需要时使用会话变量(例如,将用户表单数据从一个注册表步骤保存到另一个注册表步骤)。

有人告诉我,web应用程序应该始终是无状态的,会话变量的问题是访问web应用程序的用户越多,web服务器的内存就会越多,这最终会破坏应用程序的可伸缩性。

我想知道的是,现在使用了哪些替代方案来将用户与其数据进行耦合。在我的例子中,我有一个包含4个独立步骤的注册表表单的应用程序,我希望允许用户继续他们离开的注册表进程。

预先感谢所有回答的人。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-31 15:11:54

在我们的应用程序中,我们将所有用户状态数据保存到数据库中,以允许用户返回到他们停止的地方。如果将信息保存在会话中,则当用户注销或关闭浏览器窗口时,会话变量可能会丢失。

为了便于使用,我们创建了一个UserStateManager类。它的工作原理如下

  1. 为了检索信息,我们创建了以下函数。第一次调用它时,它从数据库中读取信息。然后,它将信息保存在本地缓存内存中。这样,下一次加载页面时,信息已经出现,可以跳过数据库调用。 变量i=UserStateManger.Get(“对象名称”);
  2. 为了保存信息,我们创建了以下函数/每当调用该函数时,它将当前状态信息写入数据库和本地缓存内存。 UserStateManager.Save(“对象名称”、“数据对象”);

您应该允许将任何数据类型保存为“数据对象”。这可以是值类型或类对象。

票数 2
EN

Stack Overflow用户

发布于 2018-03-31 17:47:56

最后,要提供“持久性”(又称“会话”)的任何定义,您必须使用某种存储机制。

代码语言:javascript
运行
复制
- obviously whatever you store here will be accessible to the client, so caveat emptor (nothing sensistive, don't trust blindly, validate!).

您可以在以上两种方法的基础上提出更多,并使用完全不同的东西(例如,一些外部存储服务),但是您必须自己管理它(使用相同的概念--例如CRUD、过期、验证等)。

Hth。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49588480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档