2010-02-22 32 views

回答

43

它们不会在来自客户端的请求之间持续任何状态。即服务不知道也不关心后续请求来自已经/还没有做出先前请求的客户端。基本上,它是一个'给我这个信息,忘了我',这使得客户有责任维持任何状态。

+1

@mike:太文字? – brian 2010-02-22 18:09:18

+2

我评论的版本很短,基本上说“因为他们不坚持状态。”我正在删除我的评论,并且还有一个优点。 – 2010-02-22 18:13:06

+0

@mike:我的不好。我有同感。这就是我更新它的原因。 – brian 2010-02-22 18:15:37

4

因为HTTP是无状态的。在客户端请求被服务器完成之后,没有信息被存储用于未来的事务。

16

因为Web服务基于HTTP,这是一种无状态协议。

引用wikipedia

无状态服务器是一个服务器,它 将每个请求作为一个独立的事务 即无关于任何先前 请求。

即,每个请求与前一个请求是独立的:即使我们使用一些“技巧”(例如cookie)来保留请求之间的某些状态,但这不是协议定义的内容。

+7

无状态协议和无状态Web服务之间有很大的区别。应用程序可以是有状态的(使用“技巧”,如您所述),而底层协议是无状态的。另外,Web服务不一定意味着HTTP。例如,SOAP可以作为传输层使用SMTP。 – 2010-02-22 19:16:25

+0

我会毫不犹豫地将SMTP SOAP服务称为“Web服务”。有很多类型的服务,但对我来说,Web服务= HTTP或HTTPS。 SMTP在网络之前。所以我认为帕斯卡的相关性很好。 – codenheim 2014-05-14 20:44:18

4

Web服务的概念是建模RPC(远程过程调用)又名一个函数。因此你不需要使用会话。此外,无状态的想法来自于将Web服务器扩展到服务器场的需求,从而实现更高的容量。

但是,使用状态的选择取决于技术和开发人员。没有什么可以阻止您创建ASP.Net Web服务并在方法定义中设置“EnableSession = True”。

这在一些基本的身份验证方案中很有用,例如本土表单身份验证或为短期“工作流程”提供自动关联。 (但我强烈建议您考虑更现代的技术将提供更高级别的安全性和性能)。