关于使用XML-RPC或REST的解决方案的简单性的论点很容易理解,很难说.
我经常也听到过这样的论点,即SOAP增加的开销可能会显着影响已使用的带宽甚至延迟.我希望看到量化影响的测试结果.有谁知道这些信息的良好来源?
SOAP与REST速度的主要影响与线速无关,但与可达性有关.REST建议使用Web的语义而不是尝试通过XML进行隧道传输,因此RESTful Web服务通常设计为正确使用缓存头,因此它们可以很好地与Web的标准基础结构(如缓存代理甚至本地浏览器缓存)配合使用.此外,使用Web的语义意味着像ETag和自动zip压缩这样的东西是很好理解的方法来提高效率.
..现在你说你想要基准测试.好吧,在谷歌的帮助下,我发现一个人的测试显示REST比SOAP快4-6倍,而另一篇文章也支持REST.
作为协议的REST不定义任何形式的消息信封,而SOAP确实具有此标准.
因此,尝试和比较两者有点简单,它们是苹果到橙子.
也就是说,SOAP信封(减去数据)只有几k,因此如果您通过SOAP和REST检索序列化对象,速度应该没有任何明显的差异.
SOAP和使用XML的任何其他协议通常会使您的消息膨胀很多 - 根据上下文,这可能是也可能不是问题.
像JSON这样的东西会更紧凑,可能更快地序列化/反序列化 - 但不要因为这个原因而专门使用它.做任何你觉得有意义的事情,如果这是一个问题就改变它.
通常使用HTTP的任何东西(除非它重用HTTP 1.1 keepalive连接,许多实现都没有)为每个请求启动一个新的TCP连接; 这非常糟糕,特别是在高延迟链接上.HTTPS更糟糕.如果您有一个发送者到一个接收者的大量短请求,请考虑如何将这个开销拿出来.
对任何类型的RPC(无论是SOAP还是其他)使用HTTP总是会产生这种开销.其他RPC协议通常允许您保持连接打开.
有一些研究已经完成,你可能会发现信息.请参阅以下内容:
SO:休息与肥皂表现
问答:SOAP和REST 101
更新的SQL Server数据服务:Northwind REST和SOAP上载
在MSDN论坛上还有一个(有点过时的)关于该主题的有趣的性能对话.
简而言之 - 大多数这些来源似乎都同意SOAP和REST与通用数据的性能大致相同.然而,一些结果似乎表明,对于二进制数据,REST实际上可能性能较差.请参阅我链接的论坛中的链接以获取更多详细信息.
如果您正在获取大量基于SOAP操作的INFORMATION(get*类型的调用),那么目前无法缓存它们.但是,如果您要使用REST实现这些相同的操作,则可能会缓存数据(取决于您的业务环境),如上所述.因为SOAP使用POST进行操作,所以它无法在服务器端缓存信息.