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

时间:2012-11-21 06:52:44

标签: java web-services rest soap jax-ws

enter image description here

让我们假设我开发了两个名为 ProductAPI OrderAPI 的服务。它们都使用公共域模型(公共实体层次结构)。< / p>

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

如果是REST:

我们可以使用JAX-RS开发ProductAPI,我们可以实现在ProductAPI中使用的“ProductAPI REST Client”来访问ProductAPI。

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

所以,没有indermediate格式转换。

对于SOAP:

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

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

我的问题:

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

2)在企业应用程序(如电子商务)中,避免这种中间数据转换以获得性能是一种好习惯吗?

1 个答案:

答案 0 :(得分:1)

  1. 要在进程之间移动数据,需要序列化数据。对于序列化数据,您当然可以使用与SOAP不同且更好的格式,但如果您已经拥有SOAP,那么它将更有效。

  2. 在这类项目中,是否值得交易程序员的表现?我的猜测是否定的,因为无论如何,表现可能还不错。如果不是,通常的建议是在优化任何事情之前测量和识别瓶颈。