5

人们是否还在编写SOAP 服务,或者它是一种已经过了其架构保质期的技术?人们正在回归二进制格式吗?

4

7 回答 7

6

SOAP 的替代方案不是二进制格式。

我认为您看到了将 WS-* 的复杂性抛在脑后转而支持 REST 和 JSON 的愿望激增,因为它们使用起来更简单,并且不需要成功使用框架。WS-* 表面上试图解决的问题对大多数用户来说并不是问题,但他们必须为复杂性付出任何代价。

于 2008-09-01T21:30:45.570 回答
4

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

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

然而,我认为,最终会出现比当前 WS 标准复杂得多的面向 REST 的标准,当这种情况发生时,类似的工具也将可用。

于 2008-09-01T21:49:11.453 回答
3

我认同。RESTful 解决方案对绝大多数用例越来越敏感;SOAP 和其他 RPC 技术的复杂性不再值得付出努力。

于 2008-09-01T22:07:33.907 回答
2

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

我认为 REST 目前才刚刚重新流行起来。这不是什么新鲜事,人们只是在重新审视它。看看网络。它是 REST,并且已经存在多年。5 年后,人们会回首往事,并说它是遗产,需要改变。这是软件开发的本质。一切都在循环中。

关于哪个更好的辩论就像制表符与空格的辩论一样。会有不同方面的人发誓一个更好。最终,他们都实现了相同的目标。当然,在某些情况下,一个解决方案会比另一个解决方案更好,但最终两者都不会 100% 更好。

于 2008-09-01T22:05:42.193 回答
2

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

我要说明的一点是,如果您控制对话的双方,那么在绕过 XML 税方面会有显着的效率优势。

于 2008-09-23T18:56:28.973 回答
1

如果不考虑问题是什么,或者说环境是什么,就不可能定义什么是最好的技术解决方案。REST 和 SOAP 都有自己的位置。如果您有一个高流量站点和一个对 REST 感到满意的开发受众,那么 SOAP 将是一个糟糕的选择,主要是因为消息大小非常臃肿。如果您有一个开发预算适中的小型站点,那么 SOAP 将是一个更好的选择,因为它可以从 WSDL 自动生成代理。为了进行公平的比较,应该提到实现 REST 对话需要更多的开发时间,因此成本更高,这对你的老板来说是一个非常相关的事实。

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

如果您的要求包括联合消息安全等复杂项目,那么 SOAP 的复杂性当然是一个优势。另一方面,根据我的经验,这类要求并不常见。WS 标准委员会可能容易受到一些 YAGNI 问题的影响。现在 Web 服务通信已经司空见惯,结果证明它比最初设想的更简单。

于 2011-07-07T17:28:41.137 回答
1

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

于 2011-07-07T17:12:26.947 回答