1

在最近的Stackoverflow 播客 (#59)中,Jeff Atwood 提到 Stackoverflow 有一些“共享状态”。我了解共享状态的一般概念,但是在 ASP.NET MVC 应用程序(如 Stackoverflow)的上下文中,共享状态到底是什么?

具体来说,我想知道以下内容:

  1. 它是什么样子的?如何在荒野中发现它?
  2. 它给系统带来了哪些限制?
  3. 你如何摆脱它?
  4. 如果它如此糟糕,为什么有人会将它包含在他们的设计中?
4

1 回答 1

1

听完最新的Stackoverflow 播客后,我明白了 Jeff 所说的共享状态。

1. 它是什么样子的?如何在荒野中发现它?

Jeff 指的是在 ASP.NET MVC 中使用 Session 变量。

2. 它给系统带来什么限制?

如果没有正确配置,会话变量的使用可以将用户绑定到特定的 Web 服务器。如果用户在请求之间在不同的 Web 服务器之间跳转,则 Session 变量中的数据将不可用。

3. 你如何摆脱它?

您可以通过将 Session 变量持久保存到可从所有 Web 服务器访问的数据库来摆脱共享状态。ASP.NET 提供了将 Session 变量免费持久保存到数据库的选项,但出于某种原因,Jeff 不愿意使用此功能。他提到他喜欢删除代码,但是他决定推出自己的机制来将会话状态持久化到数据库中。

4. 如果它这么糟糕,为什么有人会在他们的设计中包含它?

因为当你编码时它就在那里,而且很容易。

替代文字 http://www.codeproject.com/KB/mobile/DeepCast/easy-button.jpg

于 2009-09-05T04:08:28.020 回答