在具有webservices和SOAP

时间:2017-10-26 13:54:10

标签: hibernate web-services soap lazy-loading

我们有一个庞大的客户端/服务器应用程序。服务器公开多个web服务,其中大多数服务检索/填充复杂业务模型的不同部分。

目前没有延迟功能,因此即使客户端只需要一个属性值,每次发出请求时都会检索并返回完整模型。

例如,考虑下一个模型图:

Model A

然后我们有一个服务来根据不同的标准获得模型:

enter image description here

数十个客户使用这些方法,但每个客户都需要填充模型的不同部分。由于我们没有延迟加载功能,因此即使客户端只需要一个属性值,我们也会在每次调用时检索完整模型。这增加了服务器从DB查询信息所需的时间以及序列化/反序列化对象所需的时间。

在我们使用Hibernate的服务器中,由于客户端缺少功能而使用EAGER。

我们如何通过SOAP webservices实现这种机制?有没有可用的东西?

1 个答案:

答案 0 :(得分:1)

我会重视几个选项

  1. 延迟加载:修改hibernate图层以仅加载每个请求中所需的对象。

  2. 过滤SOAP对象:每个服务仅返回客户端需要清除不连续对象和整个模型属性的信息。

  3. 第一个选项将通过提高服务器性能(减少查询)和避免序列化不必要的对象来缩短响应时间,但它需要重新实现服务器数据库层和使用它的服务<​​/ p>

    第二个选项仅最小化序列化和反序列化时间以及网络传输时间,但实现非常本地化,允许您在将来维护实现甚至重新设计服务器(例如实现选项1)而不更改接口

    第一个选项似乎最合乎逻辑,但您必须考虑服务器上可以拥有的其他受影响的服务以及重新实现时间。