什么是Web应用程序或网站中的无状态状态

时间:2011-07-19 11:53:37

标签: asp.net-mvc webforms stateless

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

由于

3 个答案:

答案 0 :(得分:7)

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

或换句话说:

你走进一个汉堡店,柜台后面有几个人帮他们下订单。

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

如果它是一个“有状态”的汉堡包,你会组成队列,并且每个客户都会在柜台后面找一个特定的人通过整个订单来查看它们。

有什么区别?

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

在第二种情况下,如果某些事情发生在您服务器的中间位置,必须将对话状态传递给另一台服务器,以便它可以继续为您服务。否则你需要从头开始。保存状态需要花费一些精力 - 你需要把它写在某个地方,如果是失效的服务器,接管你的订单的其他服务器需要获得该状态并恢复剩下的交互。关闭。

如何在午餐时间缩放汉堡包?

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

鉴于第一种情况的无国籍状态,新工人可以加入业务并开始向已经处于订单中间的客户做出贡献。有人说“Katchup?”也许一个新的服务器管道“你走了”。

在第二种情况下,每个额外的服务器只能帮助处理新订单(但不包括正在进行的订单)。

答案 1 :(得分:6)

这意味着一般的Web应用程序。无状态意味着服务器和客户端之间没有持久的连接。客户说“嘿google.com,gimme that site”和谷歌回复..之后连接关闭。

您需要更多信息吗?

答案 2 :(得分:2)

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

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