首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该避免在asp.net中使用复杂对象的会话吗?

我应该避免在asp.net中使用复杂对象的会话吗?
EN

Stack Overflow用户
提问于 2012-07-14 03:55:06
回答 3查看 363关注 0票数 1

这是我的问题,我们有一个大的patient对象,它在整个管理过程中的多个屏幕上使用。每个屏幕包含关于同一患者的不同信息。它不可能都在一个屏幕上。

我唯一想要持久化患者的时间是当用户单击save时。我需要在某个地方有一个记忆中的病人。用户可能在管理员中,在各种屏幕上更改患者信息,运行验证,并决定不保存该患者。这是典型的用法。

是否可以将此患者存储在会话中?或者,有没有更好的方法来做到这一点?至多此管理员将有20个用户访问。

EN

回答 3

Stack Overflow用户

发布于 2012-07-14 04:01:34

在这一点上,人们可能会有不同的看法。会话是棘手的,特别是当您使用内存中会话之外的其他东西时。分布式会话将中断不可序列化的对象。如果此对象是一个简单的POCO或您控制的对象,请尽最大努力使其使用序列化。如果是这样的话,你就准备好了。对于一个没有太多负载的管理工具,我会说你会很好。

嘿,我找到了这个--我对这个网站一无所知,但却说明了我的观点:https://www.fortify.com/vulncat/en/vulncat/dotnet/asp_dotnet_bad_practices_non_serializable_object_stored_in_session.html

票数 0
EN

Stack Overflow用户

发布于 2012-07-14 04:01:34

我也有过类似的情况,有相似数量的用户。我这样做了,而且效果很好。

我的情况是关于安排事件。

有人会创建一个事件,并通过多个网页修改和配置此事件。当它们都完成后,它会将所有细节保存到SQL中。最后,我惊讶于它的工作效果如此之好。

票数 0
EN

Stack Overflow用户

发布于 2012-07-14 04:20:46

Session在这里应该没问题。你的用户负载看起来很轻...但您可能想要检查对象究竟占用了多少内存,将其乘以最大用户数,然后查看您所处的位置。

如果希望完全避免会话,可以使用System.Web.Caching存储对象,并使用用户标识符加一些常量字符串对存储的对象设置键。

在这两种情况下,您都需要知道有多少web服务器正在运行应用程序。如果只有一台web服务器,不用担心。如果您有多个web服务器,您需要确保它们是“粘性的”--这样用户就可以保证所有请求都由同一服务器处理。如何做到这一点完全取决于您的负载平衡风格……通常情况下,"IT人员“会为您处理此问题。

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

https://stackoverflow.com/questions/11477473

复制
相关文章

相似问题

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