我已经被要求在用户最初进行身份验证后保留用户数据。我们不想在每次导航到新视图等时都按数据库查找用户...
我有一个[Serializable]的User类,因此它可以存储在会话中。我也在使用SQL服务器进行会话状态。我正在考虑将对象存储在会话中,但我真的很讨厌这样做。
如今开发人员如何处理此类要求?
答案 0 :(得分:0)
三种方式:
答案 1 :(得分:0)
假设您的用户对象不是很大并且不经常更改,我认为将其存储在会话中是可以接受的 由于你已经有一个sql server会话,你将进行SP调用以拉取/推送数据并添加一个小对象,与其他选项相比应该具有最小的perf问题,比如将其持久保存到客户端并在每个选项上重新发送请求。 我还认为服务器是一个更安全的地方来保存这些信息 您希望最小化您在sql中存储时写入会话(请求锁定)的次数,因为它是在一个密封的类中实现的,该类是排他性锁定会话。如果此会话中的任何其他请求需要对SQL会话的写访问权限,则初始请求将阻止它们,直到它释放会话锁定为止。 (.NET 4中有一些新的钩子允许您在访问会话之前更改管道中的SessionStateBehavior)
如果SQL会话存储的性能有问题,您可以考虑使用会话状态服务器(appfabric)。