2010-04-21 50 views

回答

7

无状态的含义:

它不跟踪的配置设置,交易信息或任何其他数据的下一届会议。当一个程序“不保持状态”(无状态)或系统的基础结构阻止程序维护状态时,它不能将最后一个会话的信息带入下一个会话,例如用户选择的设置或出现的条件处理。

HTTP:

HTTP协议,这是通信车辆为Web交易,是无状态的。网页发送给用户后,连接关闭。已经开发了反制措施,例如使用cookie,以维护用户在网站上逐页移动的状态。

或者它可以是简单的网络定义:

协议是无状态的,如果有后续的请求 - 响应对之间没有关系。服务器可以唯一地处理每个请求,并且不必为客户端保留会话状态。

4

当你写一个富客户端应用程序,您可以在您方便的任意存储状态。在网络中,客户没有义务传递任何可用于保留永久信息的信息,因此您的Web服务器可能处于永久失忆状态。每当您的客户要求提供另一个页面时,您只能使用线索或提示说,这是同一个人与您交谈。

为了模拟状态,您必须使用cookie(或某些认证机制),并结合服务器端机制将这些cookie与实际的每个用户数据相关联。您也无法可靠地信任该Cookie,因此您必须权衡以确定该关联的可靠程度。另外,副作用是你永远不会真正知道用户何时完成了会话,所以你不能依靠返回来完成诸如关闭数据库连接之类的事情。基本上,您必须针对每个请求上的交互作出所有重要决策,然后假设用户永远不会回来。

1

理解HTTP和解决客户端和服务器之间共享状态的问题的一种方法是“篡改”来自Web浏览器和网站之间通信的数据。

This firefox插件只是做这个伟大的。

您可以看到,通过从浏览器发送请求,客户端只会说出一些有关请求的一些基本参数的信息。
这不足以让服务器知道客户端过去发生了什么(=状态)。

某种方式来传递浏览器有关您的状态的一些信息是通过使用cookie,这只是变量中的一些信息附加到您的请求,您也可以通过tamperdata插件看到。

0

有状态和无状态是描述计算机或计算机程序是否被设计为记录并记住与用户,另一计算机或程序,设备或其他外部元件的给定的交互序列中的一个或多个先前事件的形容词。有状态意味着计算机或程序通常通过设置为此目的指定的存储字段中的值来跟踪交互的状态。无状态意味着没有先前交互的记录,并且每个交互请求必须完全基于随之而来的信息来处理。有状态的和无状态的来源于国家作为一系列条件的使用。 (计算机本质上处于运行状态,因此这些术语用于特定交互集的上下文中,而不是一般计算机的工作方式。)

Internet的基本协议Internet协议(IP)是无状态交互的例子。每个数据包完全独立传输,而不涉及任何其他数据包。当您从网站请求网页时,请求会以一个或多个数据包的形式传输,每个数据包都独立于另一个数据包,就Internet协议程序本身而言。 (上层传输控制协议 - TCP - 确实将数据包彼此关联,但使用数据包内的信息而不是某些外部信息来执行此操作。)术语无连接还用于描述进行连接的通信,以及终止每个发送的消息。 IP无连接以及无状态。

Web的超文本传输​​协议(HTTP),TCP/IP上的应用层也是无状态的。每个来自用户的网页或URL请求都会导致所请求的页面被服务,但没有Web(HTTP)服务器稍后记住请求。换句话说,没有记录的连续性。每一封信都是离散的,与前面或后面的内容无关。为了进行有状态的通信,站点开发人员必须提供一个服务器可以调用的特殊程序,可以记录和检索状态信息。 Web浏览器(如Netscape Explorer和Microsoft Internet Explorer)在其可以存储和访问状态信息的子目录中提供一个区域。 Web浏览器和服务器应用程序在该区域中放置的区域和信息称为cookie。

在正式协议规范中,有限状态机是一个有状态系统如何工作的抽象描述,描述了遵循每种可能状态的动作。因特网(包括万维网)可以被认为是无状态的系统或机器。大多数电脑,人类和大象都是有状态的。