表现与肥皂XML-RPC或休息
-
01-07-2019 - |
题
在争论有关的简单的解决方案使用XML-RPC或休息易于理解和难以争辩的。
我常常还听取了参数,增加开销的肥皂可能显着影响使用的带宽和甚至可能延迟。我想看到的结果的测试量化的影响。任何一个知道一个很好的来源于这样的信息?
解决方案
有一些研究已经完成关于这个你能找到的信息。请参阅以下:
还有一个(有些出的日期)有趣的表现谈话的主题 MSDN论坛.
在短大多数的这些来源似乎都同意,肥皂和其余的大致相同性能,对通用的数据。一些成果,但是,似乎表明,与二进制数据,其余实际上可能不太高的性能。请参阅链接在论坛上,我相联系的更多详细说明这一点。
其他提示
作为协议的REST没有定义任何形式的消息信封,而SOAP确实有这个标准。
因此,尝试和比较两者有点简单,它们是苹果到橙子。
也就是说,SOAP信封(减去数据)只有几k,因此如果您通过SOAP和REST检索序列化对象,速度应该没有任何明显的差异。
SOAP和使用XML的任何其他协议通常会使您的消息膨胀很多 - 根据上下文,这可能是也可能不是问题。
像JSON这样的东西会更紧凑,可能更快地序列化/反序列化 - 但不要因为这个原因而专门使用它。做任何你认为有意义的事情,如果这是一个问题就改变它。
通常使用HTTP的任何东西(除非它重用HTTP 1.1 keepalive连接,许多实现都没有)为每个请求启动一个新的TCP连接;这非常糟糕,特别是在高延迟链接上。 HTTPS更糟糕。如果您有一个发件人到一个接收者的很多短请求,请考虑如何将这个开销拿出来。
对任何类型的RPC(无论是SOAP还是其他)使用HTTP总是会产生这种开销。其他RPC协议通常允许您保持连接打开。
扩展“pjz”的回答。
如果您正在获取大量基于SOAP操作的INFORMATION(get *类型的调用),那么目前无法缓存它们。但是,如果您要使用REST实现这些相同的操作,则可能会缓存数据(取决于您的业务环境),如上所述。因为SOAP使用POST进行操作,所以它无法在服务器端缓存信息。
SOAP肯定更慢。有效载荷明显较大,组装,运输,解析,验证和处理的速度较慢。
我不知道基准测试问题的任何答案,但是,我对SOAP格式的了解是肯定的,它确实有开销,但是每个请求的开销不会增加:如果你有一个元素被发送到Web服务,您有开销+一个元素构造,如果您有1000个元素发送到Web服务,您有开销+ 1000元素构造。在为特定操作格式化XML请求时会发生开销,但请求中的每个参数元素的格式都相同。
如果您坚持使用可重复的,短暂的数据突发(例如,500个元素),速度应该是可以接受的。
我猜这里的主要问题是如何进行比较RPC用肥皂。
他们都服务于同一办法的通信抽象的具有存根的对象操作和原始的/复杂的数据类型你回来没有真正地知道这一切如何处理下面。
我总是会更喜欢(星)RPC因为
- 这是轻质的
- 有许多伟大实现为所有编程语言出有
- 这是简单易学/用/创建
- 它的快速(特别是结果的方式)
虽然有原因你应该用肥皂,即如果你需要的命名参数,而不是依靠他们正确了
一些更多细节你得到这个计算器 的问题