我正在使用 web 服务从 java 应用程序中提取大量数据。数据的结构有点复杂,有很多使用数组集合的分层模式。我遇到了大约 15 秒的巨大性能问题(在 jboss 和 WebSphere 中)来加载数据。消耗的时间主要是在将服务数据转换为弹性对象结构时。迁移到 Weblogic 应用程序服务器时问题变得更糟。我正在使用axis2框架。
有没有办法优化这个?我可以使用哪些替代技术来代替网络服务?
我正在使用 web 服务从 java 应用程序中提取大量数据。数据的结构有点复杂,有很多使用数组集合的分层模式。我遇到了大约 15 秒的巨大性能问题(在 jboss 和 WebSphere 中)来加载数据。消耗的时间主要是在将服务数据转换为弹性对象结构时。迁移到 Weblogic 应用程序服务器时问题变得更糟。我正在使用axis2框架。
有没有办法优化这个?我可以使用哪些替代技术来代替网络服务?
恐怕你可能不喜欢我的回答,因为这会涉及到大量的重构。我想不出任何简单的解决方法。
我可以使用哪些替代技术来代替网络服务?
通过使用AMF远程处理而不是 Web 服务,您将获得最佳性能。这是一篇解释它是什么的文章并包含一个基准,它将向您展示这可以轻松地将您的响应时间缩短一半:http ://www.themidnightcoders.com/products/weborb-for-net/developer-den/技术文章/amf-vs-webservices.html。该基准在服务器端使用 .Net。它会在 Java 服务器上工作得更好。
有没有办法优化这个?
您应该考虑将传递给客户端的对象重构为“数据传输对象”(DTO)。这些是简单的值对象,仅包含客户端显示所需的数据。这意味着:将数据从服务器传输到客户端所花费的时间更少,将对象转换为 ActionScript 类所花费的时间更少。
您如何限制所涉及的工作?
您可以在服务器端添加一个层,该层将调用您现有的 Web 服务,将复杂的数据转换为简单的 DTO,并通过 AMF 服务将它们交付给客户端。这样一来,您就可以保持现有代码不变,并且仍然可以获得显着的性能提升。