我的意思是,真的,SOAP有什么意义?
Web服务已经存在了一段时间,有一段时间似乎"SOAP"和"Web服务"这两个术语在很大程度上是可以互换的.然而,SOAP总是显得笨拙而且对我来说过于复杂.
然后REST出现了,突然间Web服务变得有意义了.
正如Joel Spolsky所说,给程序员一个REST URL,他们可以立即开始使用该服务,并将其搞清楚.
SOAP在WSDL和大量冗长的XML背后进行了混淆,尽管是基于Web的,但您不能做任何像使用Web浏览器访问SOAP服务那样简单的事情.
所以我的问题的实质是:
是否有任何理由选择SOAP over REST?
你现在正在使用SOAP吗?如果界面是REST会更好吗?
我错了吗?
Pete Kirkham.. 12
正如Joel Spolsky所说,给程序员一个REST URL,他们可以立即开始使用该服务,并将其搞清楚.
然而,如果服务具有良好指定的机器可读合同,那么程序员就不必浪费任何时间来计算它.
(并不是说WSDL/SOAP必然是良好实现良好指定合同的一个例子,但这是WSDL的要点)
最初,SOAP是一个简单的协议,允许您向消息添加标头,并具有标准化的对象实例到XML结构的映射.将处理元数据放入消息中简化了客户端代码,这意味着您可以非常简单地持久化并对消息进行排队.
我在2001年构建SOAP服务时从未需要头处理细节.这是在WSDL之前,然后使用GET获取信息和查询是正常的(与大多数声称是REST的应用程序没有什么不同; REST有更多在使用超链接进行服务发现方面)和POST用SOAP有效负载来执行操作.创建资源的那些操作会将创建的资源的URL返回给客户端,然后客户端可以获取资源.我认为事实上,WSDL只能在RPC方面进行思考,而不是创建资源使SOAP失去情节的行为.
正如Joel Spolsky所说,给程序员一个REST URL,他们可以立即开始使用该服务,并将其搞清楚.
然而,如果服务具有良好指定的机器可读合同,那么程序员就不必浪费任何时间来计算它.
(并不是说WSDL/SOAP必然是良好实现良好指定合同的一个例子,但这是WSDL的要点)
最初,SOAP是一个简单的协议,允许您向消息添加标头,并具有标准化的对象实例到XML结构的映射.将处理元数据放入消息中简化了客户端代码,这意味着您可以非常简单地持久化并对消息进行排队.
我在2001年构建SOAP服务时从未需要头处理细节.这是在WSDL之前,然后使用GET获取信息和查询是正常的(与大多数声称是REST的应用程序没有什么不同; REST有更多在使用超链接进行服务发现方面)和POST用SOAP有效负载来执行操作.创建资源的那些操作会将创建的资源的URL返回给客户端,然后客户端可以获取资源.我认为事实上,WSDL只能在RPC方面进行思考,而不是创建资源使SOAP失去情节的行为.
这个话题在为什么肥皂被认为很厚的时候被充分讨论.
我认为它的方式,SOAP可能更"灵活",但结果却太复杂了(你提到了WSDL,这对我个人来说总是一个绊脚石).
我得到了 REST.这很简单.我可能会看到的唯一缺点是,您要限制自己针对单个资源的4个基本操作,这可能不完全符合您查看数据的方式.
在做一些研究以了解这里的一些答案(特别是John Saunders')时,我发现这篇文章http://harmful.cat-v.org/software/xml/soap/simple SOAP比我想象的更疯狂......