各种风格的 Web 服务在性能上是否存在差异?

Do the various styles of Web Services differ in performance?

所以我们有基于 SOAP 的 JAX-WS,可以是 RPC 样式文档样式。这些也称为 Big Webservices

以上两个也有使用encodedliteral样式的选项。

然后我们有 JAX-RS,Web 服务的 RESTful 版本。据我所知,这种风格用于构建轻型 Web 服务以及不生成动态数据的 Web 服务,因此可以缓存结果。 不需要 WSDL。 这也不支持身份验证(我认为)。

这些样式在性能或执行速度上是否不同?

我有一个应用程序使用 Web 服务来访问防火墙后面的数据库。(将数据公开为服务 - 我正在使用一个名为 WSO2 的工具)查询执行速度很快,但 Web 服务需要时间格式化 XML 中的数据,因此我的应用程序变慢了。

如果我使用不同风格的 Web 服务,我的性能会提高吗?

RESTful 网络服务支持身份验证,最简单的是 HTTP Basic AUTH。

性能上自然会有差异,这取决于你在做什么。但是,WebService 的类型不太可能对提高性能很重要。它更多地是关于 WS 正在做什么。真正的热点在你的业务代码中。

与 SOAP 相比,REST 在吞吐量方面更轻量级,因为只有最少的数据通过 HTTP 传输。您可以在以下位置找到更多信息 this great thread.

对于 SOAP,以及 RPC/encoded、RPC/literal、Document/encoded、Document/literal 之间的区别以及何时使用它们,您可以查看 this article .它涉及性能 - 它主要与类型编码与不类型编码有关。

您说查询(我假设业务逻辑也是如此)非常快。因此,如果您想针对您的情况优化性能,您应该首先分析网络连接 - 速度、延迟、带宽,然后仔细查看消息转换逻辑,以防您做的事情过于繁重。

区分 Web 服务和 REST 的几个要点。

SOAP/web 服务 (SOA)

  • 严格的contracts/service定义如WSDL/XSDs
  • 复杂的消息格式 - SOAP
  • 复杂的安全协议 - WS-Security,WS-Trust/Federation 等

休息- - 具有简单消息格式的松散合约(JSON、XML) - API 通过 Swagger 等简单标准定义。 http://swagger.io/ - 轻量级协议,例如 basic-auth/OAuth 2.0/OpenID Connect。

我的建议是您应该 select 基于业务需求而不是基于性能的 Web 服务或 REST(当然,在 SOAP Web 服务中严格验证,性能会受到影响)

请记住,基于 REST 的业务 functionalities/services 是 API 和 API-Management[1] 的关键驱动力。

[1] http://www.slideshare.net/kasun04/api-integration-and-soa-convergence