2

我只是在学习 Web 应用程序开发的基础知识。当我阅读不同的方法时,如 ASP.Net Web Forms、ASP.Net MVC 等。大多数教程在解释 MVC 和所有内容时都提到了“无状态”一词。我无法正确理解该术语。你能帮忙解释一下吗。

谢谢

4

3 回答 3

7

这意味着一般的 Web 应用程序。无状态意味着服务器和客户端之间没有持久连接。客户说“嘿 google.com,给我那个网站”和谷歌响应.. 之后连接关闭。

您需要更多信息吗?

于 2011-07-19T11:56:18.280 回答
7

这里的状态是指服务器为其连接的每个客户端维护的交互状态。(请注意,它与 MVC 无关。)

或者换句话说:

你走进一家汉堡店,柜台后面有几个人帮助人们点菜。

如果在与柜台后面的人的每一次互动中,任何一个柜台后面的工作人员都能够为顾客服务,那么汉堡店的流程就是“无国籍”的。例如,你说“给我一个汉堡”,有人给你一个汉堡。你说“Katchup”?别人给你你所要求的。

如果这是一个“有状态”的汉堡店,你会排队,每个客户都会在柜台后面安排一个特定的人来查看他们的整个订单

有什么不同?

在第一种情况下,无论柜台后面的任何工作人员发生什么情况,您的订单都会逐步进行。每个步骤都可能由不同的工作人员处理(或者也可能随机发生同一个工作人员完成所有操作,但这只是机会)。您只需继续您的订单到柜台。

在第二种情况下,如果在您的服务器中途发生了某些事情,则必须将对话的状态传递给另一台服务器,以便它可以继续为您服务。否则,您需要从头开始。保存状态需要付出一些努力——您需要在某处将其写下来,如果服务器停止运行,则接管您订单的另一台服务器需要获取该状态并恢复其所在位置的交互离开。

为午餐高峰缩放汉堡店怎么样?

在这两种情况下,经理都可以简单地在柜台后面添加新工人。

鉴于第一个案例的无国籍状态,新员工可以加入运营并开始为已经处于订单中间的客户做出贡献。有人说“Katchup?” 也许一个新的服务器会返回“给你”。

在第二种情况下,每个额外的服务器只能帮助处理新订单(而不是已经在处理的订单)。

于 2011-07-19T12:25:01.613 回答
2

http://en.wikipedia.org/wiki/Stateless_server

在一个简单的示例中,当您处于无状态环境中时,您可以修改变量(例如用户名),但如果您重新加载页面(因为我们正在谈论 webapps),该变量会重置。这就是为什么它被称为无状态,两个状态之间没有持久性(例如,每次页面刷新都是一个状态)。

于 2011-07-19T11:59:33.670 回答