考虑到这些领域,我可以粗略地概述一下,但是我不能为您得出结论。两种协议在两个主要方面有所不同:
消息格式最容易理解。请求和响应的SOAP打包都非常繁重。有一个包含标题和正文部分的SOAP信封。标头可被请求链中的多个过滤器用来执行某种形式的标识,授权等。但是,XML解析成本很高,这对系统的可伸缩性产生了一定的影响。多少取决于堆栈中的SOAP处理层。
服务发现可能是您争执最多的地方。REST本质上提供了可预测的端点,并且请求的内容是一个简单的HTTP请求。这样做的好处是没有额外的开销,并且最终用户在了解了您网站的URL结构后,几乎可以猜测如何做所需的事情。当然,天真的安全意识人们会认为这是一个弱点。毕竟,使用SOAP,您必须使用WSDL才能知道端点是什么。当然,使用SOAP,您可以获得完整的消息格式,因此可以进行更有针对性的攻击。
按您提供的类别细分:
安全
哪一种在本质上都比另一种更安全。使用良好的安全性原则:
- 加密通讯
- 在处理之前,请确保您对用户进行身份验证和授权
- 良好的编码习惯,避免直接攻击
- 那只是短名单。
记住晦涩!=安全。
性能
由于遵循简单HTTP协议的请求,原始性能和可伸缩性都将归于REST。大多数SOAP堆栈都使用SAX解析(基于事件的解析),这极大地提高了SOAP堆栈的可伸缩性,但是对开销产生了可观的影响。SOAP除了XML解析开销外,还具有正常的HTTP处理开销。REST仅具有HTTP处理开销。
复杂
从系统的角度来看,REST必胜。移动部件更少,请求链更精简,等等。这意味着更容易实现可靠性。
从程序员的角度来看,如果您使用的IDE或框架为其提供了良好的支持,则SOAP可以胜出。本质上,使用REST,您有责任执行预处理工作(身份验证/授权/等),而使用SOAP,大部分工作都可以通过可插入的处理链来完成。
我的偏好
我对HTTP请求非常满意,而且我知道网络的工作原理。因此,REST方法对我来说更可取。但是,我确实知道我的一些客户对此感到不舒服。他们已经阅读了一些行业文章,这些文章谴责REST与SOAP等的安全性。最重要的是,这两种方法都不保证安全性。您需要确保应用程序的安全性和安全性。显然,社交网络应用程序对安全性的要求(或要求)不如银行或政府系统那么高。许多SOAP堆栈都包含处理器,您可以插入这些处理器以提供某种安全性,但是搜索并放置它们仍然是您的责任。