5

我有一个 HTTP 是无状态的概念,因此 HTTP 上的 SOAP(用于 Web 服务)也是无状态的。我曾经认为状态意味着“对象的状态”。例如,假设我有一个名为的类和名为and的Employee方法。如果 web 服务的调用者调用工资为 1000,那么如果被调用,调用者不一定会得到值 10000。当我测试得到 1000(即分配的值)时,我想知道状态如何对象的保留。setSalarygetSalarysetSalarygetSalarygetsalarysetSalaryEmployee

Stack Overflow 问题Web 服务是无状态的?提到了用于维护状态的cookie之类的技巧,但是由于我没有做出任何明确的努力来维护状态,所以Employee对象的状态是如何维护的?

如果我完全误解了有状态/无状态的概念,请告诉我。

4

2 回答 2

9

无状态意味着服务的状态不会在后续请求和响应之间持续存在。而在有状态的情况下,状态会在后续请求之间保持不变,即每个请求都需要知道并保留在先前请求中所做的更改。

银行应用程序是有状态应用程序的一个示例,用户首先登录然后进行交易并注销。如果用户在注销后尝试进行交易,他将无法这样做。

是的,http 协议本质上是一个无状态协议,但为了使其有状态,我们使用了HTTP cookie。因此,默认情况下是 SOAP。但它也可以是有状态的,这取决于您使用的框架。

您提供的案例,您是否尝试在后续请求或相同请求中设置和获取值?只有这样,我才能对此发表评论。

于 2012-05-02T06:48:23.880 回答
3

在 HTTP 等无状态协议中,每个请求都是独立的。在每个请求中,客户端调用服务器,服务器响应。每个请求都是独立的。客户端需要在每次请求时重新建立与服务器的关系。这并不意味着服务器会忘记以前的请求。如果客户端请求员工的薪水,服务器将响应它拥有的该员工的薪水信息。就是这个getSalary 意思。如果客户端告诉服务器员工的薪水是多少,服务器将保存该员工的薪水值。就是这个setSalary意思。

如果您在setSalary之前执行getSalary,您将取回您设置的值。你还期望发生什么?究竟是什么setSalary方法不会导致服务器实际保存getSalary值集,并在后续请求中返回该值?

于 2015-07-10T10:20:33.253 回答