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

我应该避免在asp.net中使用复杂对象进行会话吗?,asp.net,session,Asp.net,Session,这是我的问题,我们有一个大的病人对象,在整个管理系统的多个屏幕上使用。每个屏幕包含关于同一患者的不同信息。它不可能都在一个屏幕上 我只想在用户单击“保存”时保存患者。我需要一个记忆中的病人。用户可能在管理员中,在各种屏幕上更改患者信息,运行验证并决定不保存该患者。这是典型的用法 可以将该患者存储在会话中吗?或者,有没有更好的方法来做到这一点?这个管理员最多有20个用户可以访问 关于这一点,意见可能会有所不同。会话是棘手的,尤其是当您使用内存会话以外的内容时。分布式会话将中断不可序列化的对象。如果

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

我只想在用户单击“保存”时保存患者。我需要一个记忆中的病人。用户可能在管理员中,在各种屏幕上更改患者信息,运行验证并决定不保存该患者。这是典型的用法


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

关于这一点,意见可能会有所不同。会话是棘手的,尤其是当您使用内存会话以外的内容时。分布式会话将中断不可序列化的对象。如果此对象是一个简单的POCO或您控制的对象,请尽最大努力使其发挥序列化的作用。如果是的话,你已经准备好了。对于一个没有太多负载的管理工具,我会说你很好

嘿,我发现了这个-对网站一无所知,但说明了我的观点:

我也遇到过类似的情况,用户数量也差不多。我做到了,效果很好

我的处境是安排活动


有人会创建一个事件,并通过多个网页修改和配置该事件。当它们全部完成时,它会将所有细节保存到SQL。最后,我对它的效果感到惊讶。

这里的会话应该很好。您的用户负载似乎很轻。。。但是,您可能希望准确地检查对象占用了多少内存,将其乘以最大用户数,然后查看您的位置

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

无论哪种情况,您都需要知道有多少web服务器正在运行应用程序。如果只是一个web服务器,那就不用担心了。如果您有多个web服务器,您需要确保它们是“粘性的”——然后保证用户的所有请求都由同一个服务器处理。如何做到这一点完全取决于您的负载平衡风格。。。通常“IT人员”会为您处理这件事