1

这是我的问题,我们有一个大型患者对象,在整个管理员的多个屏幕上使用。每个屏幕都包含有关同一患者的不同信息。不可能全部在一个屏幕上。

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

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

4

3 回答 3

0

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

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

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

于 2012-07-13T20:20:46.327 回答
0

对此意见可能有所不同。会话很棘手,特别是如果您使用内存会话以外的东西。分布式会话将破坏不可序列化的对象。如果这个对象是一个简单的 POCO 或者你控制的对象,尽量让它与序列化一起玩。如果是这样,你就准备好了。对于没有太多负载的管理工具,我会说你会没事的。

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

于 2012-07-13T20:01:33.893 回答
0

我有类似的用户数量类似的情况。我做到了,效果很好。

我的情况是安排活动。

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

于 2012-07-13T20:01:34.113 回答