我建议在 MVC3 中使用一个简单的会话对象来维护像 RecordIds 这样的状态数据,而不是将它们传递给所有客户端页面,这会很麻烦。一次填充会话对象直到不再使用似乎要简单得多。
那么这是可以接受的做法还是作弊?
非常感谢。
我建议在 MVC3 中使用一个简单的会话对象来维护像 RecordIds 这样的状态数据,而不是将它们传递给所有客户端页面,这会很麻烦。一次填充会话对象直到不再使用似乎要简单得多。
那么这是可以接受的做法还是作弊?
非常感谢。
就像开发人员生活中的一切一样,使用会话是一种权衡,恕我直言,它通常是一个糟糕的选择。
会话状态不仅会导致服务器上的负载趋于增长并产生可伸缩性障碍(这两个问题都可以通过使用状态服务器或 sql 服务器存储会话变量来部分解决),它还有一个并非每个人都知道的设计怪癖:它在会话上维护一个读写锁。(http://msdn.microsoft.com/en-us/library/ms178581(v=vs.100).aspx)
这意味着默认情况下,同一用户不能发出两个并发请求。此行为与 asp.net 相关(不仅仅是 asp.net MVC),但是由于 asp.net MVC 确实鼓励您走 ajax 之路,因此您会更频繁地看到此问题)。
您可以通过巧妙地使用只读会话状态或有选择地禁用它来绕过这些问题,但根据我的经验,这会产生开发开销,因为该属性只能在类范围内声明,而不能用于特定的操作方法,这会导致您分解逻辑通常会放在一起的单位。
总之,尊敬的,asp.net 会话状态默认行为是有问题的。尽可能避免使用它。
使用 Session 对象没有任何问题。通常人们避免使用它们以减少服务器上的负载;但是如果你很小心,不要尝试在其中放入大量数据并且没有太多(多少取决于你的服务器),那么这是一种可以接受的做法。
有关使用会话的潜在缺点的一些信息,请查看仍然可以在 ASP.NET mvc 中使用会话变量的答案,或者对于某些事情(例如购物车)是否有更好的选择