真正的SOAP互操作性是一个神话吗?

时间:2010-08-30 09:17:21

标签: soap interop

我的意思是, true 真正的互操作:从Java到.NET,从PHP到Java等。

我问,因为我们的权力要求我们使用SOAP Web服务实现面向公众的API,而我正试图强调RESTful XML / JSON API。

他们的推理是由洗脑引起的:

  • SOAP是一种基于标准的协议(更不用说我们的一个开发人员花了4天时间埋没在XML配置和自定义安全令牌序列化程序中,试图以某种方式弯曲WCF客户端,以便它可以调用WSE 3.0服务并生成所有类型晦涩的错误),
  • SOAP是安全的(但从业务角度来说,我们既不需要加密也不需要数字签名 - 基于SSL的HTTP就足够了)
  • 最后,SOAP可以互操作,这似乎是他们的最高卖点(这个问题的重点)

重申:SOAP真正可以互操作吗?你真实世界的战争故事会很棒。

2 个答案:

答案 0 :(得分:3)

只要您坚持WS-I-based SOAP标准,那么互操作通常很容易。 WS-I旨在解决早期SOAP实现所遭受的初始互操作问题。

当使用pre-WS-I Web服务(例如rpc编码的东西)时,或者当使用类似WCF的花哨的安全扩展时,问题往往会突然出现。那些变得复杂,并且在出错时难以调试。

答案 1 :(得分:1)

是的,在大多数情况下,虽然有时它可能是一场战斗。我有许多基于标准的肥皂服务,有些语言/库似乎比其他语言/库更容易。

但是,所有人都不满意SOAP领域。一个特别顽皮的库(Apache Axis),默认情况下将WSDL的副本编译成它的存根....这本身并不奇怪,因为.net做同样的事情......但问题是它也验证了任何变化的WSDL都可以。如果检测到更改,它会抛出。

因此,假设您有一个创建用户方法,并且在未来5个月内添加中间位置。您将使用Axis中断所有消费者的服务...即使不需要中间首字母,如果您发送它,服务可能会更少。因此,在我们的位置,我们必须在几个月之前向客户发送消息,添加任何可选参数,以便他们可以再次雇用他们的承包商,以便在发布之夜重新编译WSDL。