Web services SOAP与REST:实用主义案例研究?

Web services SOAP与REST:实用主义案例研究?,web-services,Web Services,我对SOAP vs REST问题给出的答案不满意,尤其是这里: 因为这只是一般的哲学答案,而不是一些研究案例的实用主义答案 没有人能给出soap何时比rest更合适的确切例子,特别是从性能的角度 更新:我认为REST正在赢得这场战争。性能不是决定性因素 首先,我应该说,问一个SOAP vs REST的问题有点古怪,因为SOAP是一种XML信封格式,REST是一种体系结构。因此,我将做一个小小的假设,假设您真的在考虑SOAP与POX、SOAP与JSON、SOAP与其他一些数据格式化方法 决定因素

我对SOAP vs REST问题给出的答案不满意,尤其是这里:

因为这只是一般的哲学答案,而不是一些研究案例的实用主义答案

没有人能给出soap何时比rest更合适的确切例子,特别是从性能的角度


更新:我认为REST正在赢得这场战争。

性能不是决定性因素

首先,我应该说,问一个SOAP vs REST的问题有点古怪,因为SOAP是一种XML信封格式,REST是一种体系结构。因此,我将做一个小小的假设,假设您真的在考虑SOAP与POX、SOAP与JSON、SOAP与其他一些数据格式化方法

决定因素应该是:
您现在需要还是将来需要SOAP信封?

SOAP信封允许框架提供的加密、digsig、路由和授权检查等功能。当然,您可以使用REST(或者更准确地说,使用普通的旧XML或JSON等)来完成这些事情,但是您必须自己做更多的工作,才能实现这一点

如果性能——不管你如何理解它——真的是你的#1标准,那么你可能应该放弃SOAP和POX,转而使用protobufs或其他针对性能优化的产品。这些可以更快地序列化和传输


如果你认为这个答案“太哲学化了”,你真的想要硬数字,那么我想你需要进行一些测试。实际的性能将因您选择的工具包、消息的形状和您使用的额外数据服务(如加密等)而有很大的不同。但最终,无论哪种方式,性能都不会或不应该是决定性的


如果您的SOAP工具包易于使用20%。调试和维护您的POX工具包,然后您应该使用SOAP,而不管性能如何。如今,人们(程序员、架构师、测试人员)比CPU和网络要昂贵得多。如果有必要,并且您的设计正确,您可以随时购买另外2个CPU或更大的网络。但是,如果你的框架很难使用,或者如果它赶走了你的员工,那么你无论如何也不能减少20%的开发时间。除非您运行的是地理范围的网络,否则您将更好地为人们而不是网络进行优化。

您可以在此处找到一篇比较REST和SOAP的文章:

作者的结论似乎是:

  • 使用RESTful服务在Web上进行战术性的临时集成
  • 在具有更长生命周期和高级QoS要求的专业企业应用程序集成场景中更喜欢WS-*Web服务
就我个人而言,我不喜欢“专业企业”这样的术语,因为它是松散和非正式的。然而,在我看来,作者在文章中提出了一些好的观点。或许可以总结一下,并给出一些自己的想法:

  • 如果您想公开API,请以RESTful方式进行。为什么?它很容易用于客户端应用程序,因此它将使您的服务更受欢迎。例如,Amazon同时公开了REST和SOAP API,但85%的用户选择了REST版本

  • 如果您要创建(或控制创建过程)服务的消费者和生产者,并且确实需要WS-*的高级功能,请使用SOAP和WS-*堆栈。这可能需要更多的资源,因为SOAP应用程序往往“更重”(更多的特性,但也更复杂)

另外,考虑到性能,REST可以更快(消息肯定更短,并且不需要解析xml)

希望这会有帮助

在您的flash客户端示例中,如果不知道详细信息就很难判断,但是如果不需要WS-*的所有这些安全性和事务性功能,我认为构建REST应用程序会更简单、更快


回应评论

我应该用肥皂,因为我很忙 被称为“专业企业”

当然,假设您的选择并不是由大型软件供应商决定的

SOAP适合大型企业,因为它鼓励更正式的方法。它提供了庞大的规范,因此您的开发人员可能需要时间来学习这些规范,甚至可能需要一些专业培训-->以便花费公司资源。它还提供工具,而且并非所有工具都是开源的,因此这也意味着需要额外的资源。但是,如果您的团队将学习这种集成服务的方法,那么它可能会非常高效,并且生成的代码将是高质量的

相反,REST更像是一种开发应用程序的理念。因此,没有庞大的规格,没有专门的工具。没有资源支出。如果你有一个由优秀程序员组成的小团队,这可能会很好——如果他们知道基本原则,他们就不需要那么多指导原则。不幸的是,做错事也更容易

另一个要考虑的是应用程序的大小——API越丰富,想要集成的服务越多,REST就越难。另外,构建小型SOAP应用程序可能不是一个好主意——整个开销和入口成本都太高了

您需要评估项目的利弊。如果不知道我认为所有的细节,就不可能给出推荐

最后,这与合理的争论无关,更多的是与政治有关。我认为管理层的人似乎更喜欢WS-*堆栈和SOAP(它支持“大企业”,所以他们更容易证明自己的选择)。另一方面,学术背景[1]的人更喜欢休息,因为在这个领域还有很多研究可以进行


[1] 我介于两者之间,因此我可以观察这两种行为;-)

我喜欢这个,只想补充一下,所有的地理尺度网络