asp.net-mvc - 在MVC中使用Session对象,真的很糟糕吗?

标签 asp.net-mvc asp.net-mvc-3

我建议在 MVC3 中使用一个简单的 session 对象来维护 RecordIds 等状态数据,而不是通过所有客户端页面传递它们,这会很麻烦。只填充 session 对象一次直到不再使用似乎要简单得多。

那么这是可以接受的做法还是作弊?

非常感谢。

最佳答案

就像开发人员生活中的一切一样,使用 session 是一种权衡,恕我直言,这通常是一个糟糕的选择。

session 状态不仅会导致服务器上的负载趋于增长并产生可伸缩性障碍(这两个问题都可以通过使用状态服务器或 SQL Server 存储 session 变量来部分解决),它有一个并非每个人都设计的怪癖知道:它维护 session 的读写锁。 (http://msdn.microsoft.com/en-us/library/ms178581(v=vs.100).aspx)

这意味着默认情况下,同一用户不能发出两个并发请求。此行为与 ASP.NET 相关(不仅仅是 ASP.NET MVC),但是由于 ASP.NET MVC 确实鼓励您走 Ajax 之路,因此您会更频繁地看到此问题)。

您可以巧妙地使用 readonly session state or selectively disabling it 来绕过这些问题,但根据我的经验,这会产生开发开销,因为该属性只能在类范围内声明,而不能针对特定的操作方法声明,这会导致您分解通常放在一起的逻辑单元。

总之,尊敬的,asp.net session 状态默认行为是有问题的。如果可能的话避免使用它。

关于asp.net-mvc - 在MVC中使用Session对象,真的很糟糕吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15878252/

相关文章:

asp.net-mvc - 从 View 调用操作方法

c# - ResouceManager 有时会错误地加载 ASP.Net MVC 资源文件

asp.net-mvc-3 - 在 MVC3 中发布后保护模型的最佳实践

asp.net-mvc-3 - ASP.NET MVC 返回正确 View

c# - mvc中的批量更新

c# - 合并多个配置文件

asp.net-mvc-3 - 使用 knockout.js 映射插件映射 JSON 数组,并且 View 渲染不起作用

c# - 如何通过 MVC 网站在引用 DLL 中托管 WCF 服务?

mysql - INSERT 语句与 FOREIGN KEY 约束冲突2

asp.net-mvc - 使用 Http 模块 response.redirect 给出 ERR_TOO_MANY_REDIRECTS