A Performance Comparison of Popular Open Source Web Services Engines
We really are making progress
Oct. 8, 2007 02:00 PM
Service Oriented Architecture (SOA) stands on the twin pillars of reusability and interoperability. Any business function that can be reused is an ideal candidate to be exposed as a service.
A reusable service, until and unless implemented in an interoperable manner, isn't much use. Web Services standards provide standards-based interfaces for service description, discovery, and message definitions to invoke such services. Web Service technology has come a long way to reach enterprise-grade adoption of the core standards. Nonetheless, the process has been facilitated by Web Service engine offerings from both the open source community and product vendors. One of the majors concerns of Web Services adoption is the performance overhead associated with transmitting and processing of XML. Today, Web Services engines and tools provide a means for data compression (XMill), data representation efficiency (fast infoset), and efficient processing of XML. In this article we'll be benchmarking the performance of a few leading open source Web Service runtimes, based on their capability to process XML using different binding frameworks in addition to native XML binding. We aim to bring out a comparative study highlighting the relative merits in using specific platforms for specific scenarios.
The Evolution of Web Service Platforms
The second generation of Web Services platforms such as Apache Axis 1.4 had native support for WSDL, JAX RPC, and SAAJ; however, these engines had limited support for integrating with external XML binding frameworks and solely depended on a native binding framework. Second-generation Web Services platforms boasted far better performance compared to first-generation Web Service platforms; however, the performance degraded significantly for large XML payloads. Third-generation Web Services platforms such as XFire and Axis2 use StAX for XML processing and have a pluggable architecture that allows for integrating with external binding frameworks. These platforms draw from the strength of individual binding frameworks, StAX parsing models, and overall a better and pluggable architecture. Third-generation Web Services platforms deliver better performance both in small XML payloads and large XML payloads and come with support for a number of WS* standards.
Web Service Performance
Here we're concerned with the performance analysis of a SOAP Engine combined with a binding framework, hence we'll limit our performance studies to key related areas such as binding performance, round-trip performance, scalability, speed, and throughput. These are directly affected by factors such as the binding framework used and the parsing model of the SOAP Engine. The study assumes that factors external to the situation of concern remain in a constant state and that reasonable steps were taken to ensure that.
Factors Affecting the Performance of a Web Service Engine
The first generation of Web Services engines used the DOM API, which attributed to the degradation of performance for larger payloads and high load conditions.
The second generation of Web Service platforms used native code for marshalling and un-marshalling, which depended on the SAX API for XML parsing. Though SAX-based XML parsing is faster than DOM, it necessitates parsing the whole XML document, which may not be unnecessary at times, and moreover, Web Service platform-specific binding frameworks are often not as efficient as the best-of-breed binding frameworks available. Because of their dependence on custom platform-specific binding frameworks, the second generation of Web Services platforms can't benefit from improvements incorporated in the mainstream best-of-breed available binding frameworks.
The third generation of Web Services platforms come with a pluggable architecture that allows the use of best-of-breed binding frameworks with little configuration, moreover, these platforms use StAX, which combines the best features of both SAX and DOM to deliver consistently better performance for both large payloads and high load conditions.
Methodology for Web Service Engine Performance Evaluation
Table 1 provides the version numbers of the various tools and APIs used in the course of this study.
Apache Tomcat Server Configuration
Overview of the Test Cases Under Consideration
Reader Feedback: Page 1 of 1
SOA World Latest Stories
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
SYS-CON Featured Whitepapers
Most Read This Week