为啥/如何 SOAP 是有状态的?

Posted

技术标签:

【中文标题】为啥/如何 SOAP 是有状态的?【英文标题】:Why/How SOAP is Stateful?为什么/如何 SOAP 是有状态的? 【发布时间】:2016-08-15 16:43:59 【问题描述】:

我没有任何参考资料可以在这里展示我的研究(因为没有任何链接是重点),甚至谷歌也没有确切的答案。每个人都说 Web 服务是有状态的,但这很令人困惑。原则上,我相信 SOAP 是有状态的,而 REST 是无状态的。那么,为什么/如何 SOAP 是有状态的?

【问题讨论】:

你可以做无状态的 SOAP 和有状态的 REST。 @David Brabant:那么,我们可以说有状态不是 SOAP 的原则之一吗?我问这个是因为无状态是 REST 的 6 条原则之一,我发现人们在与 REST 比较时说 SOAP 是有状态的。 【参考方案1】:

基本上有状态意味着服务器存储有关客户端的信息并在一系列请求中使用该信息。所以执行一个请求取决于其他请求(例如前一个)的状态。使用 http 协议可以实现这一点。

因此您可以拥有有状态或无状态的 SOAP - 这只是您如何设计它的问题。

另外请注意,比较 SOAP 和 REST 并不真正正确。 第一个基本上是协议(或者至少它试图成为),而 REST 只是一种架构模式/风格。

我知道这不是完全回答您的问题,但请查看此链接:SOAP vs REST (differences) 它写得非常好,可以帮助您更好地理解这些技术。

【讨论】:

那么,我们可以说有状态不是 SOAP 的原则之一吗?我问这个是因为无状态是 REST 的 6 条原则之一,我发现人们在与 REST 比较时说 SOAP 是有状态的。 @kSahoo 是的,有状态不是 SOAP 协议原则或背后的想法之一。【参考方案2】:

首先,SOAP 是协议。在其他方面,我们有 REST、WSDL、WCF 等服务。 SOAP 可以用作各种服务的协议。这意味着,soap 提供了在客户端和服务器之间传递数据的机制。

根据设计和主要目的,SOAP 是在服务器和客户端之间使用的数据协议。服务器(服务)保存、保存和响应数据。 Soap 作为数据可用于服务中的两种变体 - 有状态或无状态。

默认情况下,soap 服务是无状态的。例如,WSDL 肥皂服务是无状态的。简单的 WebAPI、REST。他们都是无国籍的。

WCF - 单一实例是有状态的。 WCF - 每次调用都是无状态的。

有状态不是 SOAP 协议原则或背后的想法之一。服务可以是有状态的或无状态的。

【讨论】:

以上是关于为啥/如何 SOAP 是有状态的?的主要内容,如果未能解决你的问题,请参考以下文章

第一次在当当网买书,已经付款了,为啥订单状态还是显示“等待付款”?

为啥我无法访问 tomcat 中的服务 CXF:HTTP 状态 500 - 内部服务器错误

具象状态传输 (REST) 和简单对象访问协议 (SOAP)

HTTP是无状态的,而TCP是有状态的?

我们可以创建自定义 HTTP 状态代码吗?

如何修复为啥在 Xcode 中 ScrollView 后面有状态栏空间?