SOAP现在是一种遗留技术吗?

SOAP现在是一种遗留技术吗?,soap,rpc,Soap,Rpc,人们还在写作,还是一种已经过时的技术?人们正在回归二进制格式吗?SOAP的替代品不是二进制格式 我认为,人们越来越希望抛开WS-*的复杂性,转而使用REST和JSON,因为它们使用起来简单得多,并且不需要成功地使用框架。WS-*表面上试图解决的问题对大多数用户来说都不是问题,但他们必须为复杂性付出任何代价。我仍然编写基于WS-*的服务。有些令人惊讶的是,当我尝试与能力较差的开发人员进行交互操作时,我遇到的麻烦更少了。这是因为,如果我向他们发送一个WSDL文件,他们知道如何通过他们的工具启动它,并

人们还在写作,还是一种已经过时的技术?人们正在回归二进制格式吗?

SOAP的替代品不是二进制格式


我认为,人们越来越希望抛开WS-*的复杂性,转而使用REST和JSON,因为它们使用起来简单得多,并且不需要成功地使用框架。WS-*表面上试图解决的问题对大多数用户来说都不是问题,但他们必须为复杂性付出任何代价。

我仍然编写基于WS-*的服务。有些令人惊讶的是,当我尝试与能力较差的开发人员进行交互操作时,我遇到的麻烦更少了。这是因为,如果我向他们发送一个WSDL文件,他们知道如何通过他们的工具启动它,并获得一个他们可以调用的API,同时幸福地不知道在幕后发生了什么。为了给客户提供一个REST-ful服务,我必须开始和他们谈论HTTP和XML,他们真的不能像他们认为的那样理解它们,然后我开始感到头痛

换句话说,要想成功使用REST,服务提供商和消费者都必须知道他们在做什么(并且他们可以保持简单,并提出一个很棒的非WS-*解决方案)。使用WS-*技术,即使只有一方有线索,它仍然可以成功


我认为,面向休息的标准比目前的WS标准要复杂得多,最终会出现这种情况,类似的工具也将是可用的。

< P>我根本不会考虑SOAP遗产。REST与SOAP实际上只是COM/CORBA与HTTP POST/GET等争论的延续。SOAP不过是C和C(契约、提供者、消费者等)定义的相同原则的更新版本。只是SOAP似乎成功了(至少部分成功),而其他两个失败了(可能是SOAP有一个更好的营销团队),也就是说,与它的前身相比,SOAP确实允许不同的系统更容易地连接。话虽如此,它仍然与COM/CORBA有着相同的缺点……它可能变得非常复杂

我认为REST目前正重新流行起来。这不是什么新鲜事,人们只是在重新审视它。看看网络。这是休息,它已经存在多年了。5年后,人们会回首过去,说同样的话:这是一种遗产,需要改变。这是软件开发的本质。一切都是循环的


关于哪一个更好的争论就像标签与空间的争论一样。将会有来自不同方面的人发誓说一个更好。实际上,最终,他们都实现了相同的目标。当然,在某些情况下,其中一种解决方案会比另一种更好,但最终两者都不会在100%的情况下优于另一种

我想是的。RESTful解决方案对于绝大多数用例来说越来越明智;SOAP和其他RPC技术的复杂性已经不值得再努力了。

我们使用SOAP,但由于我们控制两个消息传递端点(web上连接到服务器的厚客户端),我们认为XML的“通用语言”没有提供任何实际好处。相反,我们正在试验通过谷歌协议缓冲区进行二进制序列化,就像我们迄今为止学到的一切一样。这有点像CORBA,但并不像CORBA那样让我脾气暴躁。仍然没有找到最适合RPC层的方法,但可以肯定的是,有效负载将是协议缓冲区


我想指出的一点是,如果您控制了对话的双方,那么绕过XML税会带来显著的效率优势。

是的,有些人仍然是(现在是2011年!)。我认为主要原因是MS WCF自动生成SOAP绑定。恐怖

不考虑问题是什么,换句话说,环境是什么,就不可能定义什么是最好的技术解决方案。休息和肥皂都有自己的位置。如果你有一个高流量的站点和一个对REST很满意的开发受众,那么SOAP将是一个糟糕的选择,主要是因为消息的大小太大了。如果您有一个开发预算适中的小规模站点,那么由于从WSDL自动生成代理,SOAP将是一个更好的选择。为了做一个公平的比较,应该提到的是,实现REST对话需要更多的开发时间,因此成本更高,这与您的上司非常相关

虽然SOAP确实是一个更复杂的协议,但根据我的经验,这并不能转化为可维护性问题。这是因为消息是基于HTTP的,可以像REST消息一样轻松地进行调试,并且在主要平台上可用的SOAP堆栈非常可靠


如果您的需求包括诸如联合消息安全性之类的复杂项目,那么SOAP的复杂性当然是一个优势。另一方面,这些需求在我的经验中并不常见。WS-standards委员会可能容易受到某些YAGNI问题的影响。现在,web服务通信已经司空见惯,它变得比最初设想的更简单。

我认为REST的好处之一是除了HTTP之外没有可靠的标准。WS-*既臃肿又易于使用的原因是所有内容都是标准化的,所以它解决了每个人的问题。REST通过保持自己的“习惯”来填补另一个利基。