【发布时间】:2010-02-22 18:03:23
【问题描述】:
为什么我们说网络服务是无状态的?
【问题讨论】:
标签: web-services
为什么我们说网络服务是无状态的?
【问题讨论】:
标签: web-services
它们不会在来自客户端的请求之间保持任何状态。即服务不知道也不关心后续请求来自已经/没有发出先前请求的客户端。基本上,它是“给我这条信息,然后忘记我”,这让客户有责任维持任何状态。
【讨论】:
因为 Web 服务基于 HTTP,它是一种无状态协议。
引用wikipedia:
无状态服务器是一种服务器 将每个请求视为独立的 与任何交易无关的交易 以前的请求。
即每个请求都独立于前一个请求:即使我们使用一些“技巧”(例如 cookie)来保留请求之间的某些状态,这也不是协议定义的。
【讨论】:
因为 HTTP 是无状态的。服务器完成客户端请求后,不会存储任何信息以供将来的事务使用。
【讨论】:
Web 服务的概念是对 RPC(远程过程调用)又名函数进行建模。因此,您不需要使用会话。此外,无状态的想法来自于需要将 Web 服务器横向扩展到服务器场,从而实现更高的容量。
但是,使用状态的选择取决于技术和开发人员。没有什么可以阻止您创建 ASP.Net Web 服务并在方法定义中设置“EnableSession=True”。
这在一些基本的身份验证场景中很有用,例如本地表单身份验证或为短暂的“工作流程”提供自动关联。 (但我强烈建议您考虑更现代的技术将提供更高级别的安全性和性能)。
【讨论】:
请求是相互独立的。
【讨论】: