java - 避免 RPC (SOAP) API 之间的中间数据转换?

标签 java web-services rest soap jax-ws

enter image description here

假设我开发了两个名为 ProductAPIOrderAPI 的服务。它们都使用公共(public)域模型(公共(public)实体层次结构)。

这两个服务最终都作为 RCP(SOAP 或 REST)公开。 OrderAPI 内部调用 ProductAPI。

对于 REST:

我们可以使用 JAX-RS 开发 ProductAPI,并且可以实现要在 OrderAPI 中使用的“ProductAPI REST 客户端”来访问 ProductAPI。

此客户端可以使用相同的类层次结构将 JSON 反序列化为 ProductAPI 中使用的相同类。

所以,没有中间格式转换。

对于 SOAP:

我们使用 JAX-WS(或 Axis2..etc)开发 ProductAPI,并在 WSDL 中公开服务。 在这种情况下,我们必须使用公开的 WSDL 实现“ProductAPI SOAP 客户端”。(可能使用使用公开的 WSDL 的 stub 生成工具)。

这里生成的类是根据 WSDL 中的 XSD 定义生成的,如果我们想使用相同的公共(public)域模型类,我们必须进行额外的格式转换。

我的问题:

1) 对于 SOAP,有没有办法跳过这种格式转换?

2) 在企业应用程序(例如电子商务)中,避免这种中间数据转换以提高性能是一个好的做法吗?

最佳答案

  1. 要在进程之间移动数据,需要对数据进行序列化。您当然可以对序列化数据使用与 SOAP 不同且更好的格式,但如果您已经有了 SOAP,则工作量会更大。

  2. 在这种项目中,值得用程序员的努力来换取性能吗?我的猜测是否定的,因为无论如何性能可能已经足够好了。如果不是,通常的建议是在优化任何内容之前测量和识别瓶颈。

关于java - 避免 RPC (SOAP) API 之间的中间数据转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13487865/

相关文章:

java - 从字符串中提取日期

c# - 处理来自 WS 的异常

java - Jersey @GET集合和@GET集合通过@QueryParam过滤

java - 如何在 Spring MVC 中解码 Gzip 压缩请求体

java - 使用 springs RESTtemplate 检索 Jsonobjects 列表时出现异常

java - 无法使用 start-stop-daemon 在 Linux 中停止 java 服务

java - 如何将外部 Maven 插件安装到我的 Codenvy Maven 项目中?

java - 确保 BUnit 包和测试包不包含在生产代码中

c# - 在 SharePoint(自定义操作)或 C# 项目中获取货币汇率的最佳和最简单方法是什么

java - 将返回的 JSON 字符串转换为 JSONArray