2

我正在使用构建在 Apache Axis2c 库之上的Staff Library来实现一项服务,我打算将其设为无状态。

据我了解,服务是否有状态(即“客户端和服务器的交互是否涉及服务器跟踪特定于交互的数据,因为每个后续交互都可能取决于先前交互的结果”)取决于服务架构的实现。

据我了解,我完全有可能使用 Staff 创建无状态服务。那么为什么工作人员的“功能”页面明确提到“有状态的 Web 服务实现”?员工图书馆这样做是否有意义?

4

1 回答 1

1

也许它不是真正有状态的。

将其称为“有状态”的想法是:服务器为每个会话存储服务实例。您的服务可以将本地数据存储为类属性,并且在会话中工作时您将拥有相同的数据。

当您登录并使用servicesessionId提供的Login服务时,服务器将创建(惰性)绑定到 this 的服务实例sessionId。因此,对于两个不同的会话,您将拥有两个具有不同属性值的服务实例。如果您使用一些无法在每次调用时初始化和销毁​​的大型对象,例如测地线信息系统,这可能非常有用。

无状态 Web 服务框架通常为每个客户端调用创建服务实例,并且不能在本地存储任何内容,除非您使用共享内存或 DBMS 等全局机制并传递一些 id 来区分一个客户端和另一个客户端。

于 2014-09-27T18:03:07.560 回答