假设我开发了两个名为ProductAPI和OrderAPI的服务,它们都使用通用域模型(公共实体层次结构)。
最终,这两个服务都作为RCP(SOAP或REST)公开。
OrderAPI在内部调用ProductAPI。
对于REST:
我们可以使用JAX-RS开发ProductAPI,并且可以实现在OrderAPI中使用的“ ProductAPI REST Client”来访问ProductAPI。
该客户端可以使用相同的类heirachy将JSON反序列化为ProductAPI中使用的相同类。
因此,没有中间格式转换。
对于SOAP:
我们使用JAX-WS(或Axis2..etc)开发ProductAPI,并在WSDL中公开该服务。
在这种情况下,我们必须使用公开的WSDL实现“ ProductAPI SOAP客户端”。(可能使用公开的WSDL使用存根生成工具)。
在这种情况下,生成的类是从WSDL中的XSD定义生成的,如果我们要使用相同的Common Domain Model类,则必须进行其他格式转换。
我的问题:
1)对于SOAP,有没有一种方法可以跳过此格式转换?
2)在企业应用程序(如电子商务)中,是否要避免这种中间数据转换来提高性能?
最佳答案
要在流程之间移动数据,需要对数据进行序列化。对于序列化的数据,您当然可以使用与SOAP不同且更好的格式,但是如果您已经拥有SOAP,则将需要更多工作。
值得在这种项目中以程序员的努力来换取性能吗?我的猜测是否定的,因为无论如何该性能可能会足够好。如果不是这样,通常的建议是在进行任何优化之前先测量并确定瓶颈。