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