gpt4 book ai didi

asp.net - 努力在 ASP.NET 中合理地使用 Session 变量

转载 作者:行者123 更新时间:2023-12-02 16:30:40 26 4
gpt4 key购买 nike

我尝试放弃在 ASP.NET 的 Session 变量中删除所有内容(我来自 Windows 编程背景),并且我通常完全停止在 Session 变量中显式存储任何内容。任何人都可以就您认为 session 变量的可接受用途提供一些指导吗?

这是一个具体示例...我从数据库加载业务对象并填充和编辑屏幕。用户可以编辑值并保存。我使用旧的方式加载业务对象,加载表单,然后将业务对象保存到 session 变量中。如果用户单击“保存”,我将从 session 变量中检索业务对象,替换编辑的值,然后保存它。我从数据库加载业务对象并加载表单的新方法。用户将编辑值并单击“保存”。我将从数据库重新加载业务对象,替换编辑的值,然后保存它。我不是网络编程专家,但我觉得第一种方法是错误的,因为使用 session 变量的耻辱,我觉得第二种方法是错误的,因为它感觉像是一种蹩脚的方法(加载业务对象两次) )。我们在这里不考虑任何形式的缓存。我该如何处理这个问题?

最佳答案

在回发时从数据库重新加载业务对象以保存用户更改,我一点也不觉得被冒犯。

该对象必须来自该回发的某个地方,与快速数据库调用(例如抓取特定对象)相关的有限开销可能是您最好的选择。

在回发时将该业务对象恢复到内存中的选项:

  • 再次从数据库获取它。缺点:一些(小)额外的数据库开销
  • 将其保存在用户的 session 中。缺点:可能仍然会访问数据库(如果 session 状态存储在那里)或使用大量内存(如果 session 状态存储在那里),并且如果多个用户可能访问此对象,则可能会存储多个副本,最糟糕的是,该 session 如果 ASP.NET 出于某种原因清除了该对象,则该对象可能会随着用户点击提交而消失。
  • 来自缓存。缺点:使用一些额外的内存,如果缓存不存在,您仍然需要访问数据库,但我会投入大量资金,任何应用程序都有许多更大的瓶颈来使用缓存。
  • 查看状态。您可以将对象存储在 Viewstate 中(将其发送到客户端,然后客户端将其发回)。缺点:在我看来,这是最糟糕的解决方案。将其添加到 Viewstate 意味着它会通过线路向下游和上游传递,并导致页面大小变得巨大。 Session 不是最好的,但 Viewstate 才是魔鬼。

关于asp.net - 努力在 ASP.NET 中合理地使用 Session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/832843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com