bSOAP: An Optimized C++-Based SOAP Implementation

[Introduction] [Overview] [Publications] [Status] [Downloads] [Contact]

Introduction

Over the past few years SOAP has emerged as the standard communication protocol for Web services. Also, the Web services model has been adopted as the basic architecture for Grid systems. SOAP's attractive features include extensibility, platform and language independence, interoperability and robustness. However, SOAP's poor performance remains a limiting factor in its adoption for high performance Grid applications. In particular, the routines for conversion of binary data to and from the ASCII format, as required by XML, can account for approximately 90% of the end-to-end time. We have introduced two optimization techniques, named differential serialization and differential deserialization, that help eliminate this performance bottleneck. We have designed and implemented a C++-based SOAP toolkit, named bSOAP, that implements our techniques.

Overview

Differential serialization (DS) can avoid the serialization process for a SOAP message that is similar to those in the previous sends. The idea is to save a copy of an outgoing SOAP message and in subsequent sends serialize only those fields whose values have changed. This approach does not require any changes to the SOAP protocol, and on-the-wire representation is compliant with the SOAP specification.

Differential deserialization (DDS) shares the same high-level idea of avoiding replicated (de)serialization work, but employs completely different techniques. DDS works by periodically checkpointing the state of the SOAP deserializer that reads and deserializes incoming SOAP messages, and computing checksums of SOAP message portions. The checksums can be compared against those of the corresponding message portion in the previous messages, to identify, with high probability, that the message portions match one another exactly. When message portions match, the deserializer can avoid duplicating the work of parsing and converting the SOAP message contents in that region.

Publications

Please see bSOAP's
page on our Grid Computing Research Laboratory site for a list of relevant publications. You can also find links to bSOAP papers on the GCRL publications page, which gets updated more frequently.

Status

bSOAP was developed for research purposes. It still lacks some of the features found in other SOAP and Web Services toolkits. Most effort has been put in implementing the core DS and DDS techniques, rather than providing full compliance with all of the SOAP and SOAP-related specifications. For example, bSOAP currently only recognizes ASCII characters and does not support all XML features (e.g., CDATA sections). We hope that future versions will implement the missing features and improve the overall architecture of the toolkit.

Downloads

bSOAP's serializes uses a URI parsing library for HTTP header generation. This library has to be installed before installing bSOAP. Both URI and bSOAP use an
autoconf-based installer. Generic installation instructions can be found here. Please refer to the file INSTALL in the root directory of the source tree of bSOAP or URI for installation instructions specific to them.

Please click on the links below to download the sources. After installing the URI library, you can pass --with-URI=path to bSOAP's configure script to indicate that the URI library was installed in location path in your file system.

Contact

For questions regarding bSOAP, please contact
Nayef Abu-Ghazaleh or Mike Lewis.
Last updated: Jan 18, 2007