We analysed the performance of SOAP and the role it can play in distributed object component systems. As expected, SOAP RMI is usually much slower than Java RMI and Nexus RMI, usually by a factor of about ten. Surprisingly, it can be faster than the high-performance protocol Nexus RMI for small messages. Since its serialization and deserialization times are always larger than Nexus's, the faster speed is attributable to what happens between the client and server, including conversions to network representations. In spite of this the XML messages SOAP uses are inherently unsuitable for bulk data transfers.
Although the performance break-even point occurs for small messages, SOAP's interoperability across heterogeneous environments makes it a valuable ingredient for a multi-protocol environment. Human readability of SOAP packets makes SOAP a useful protocol during development and debugging. Since SOAP's simplicity lends itself to robust implementations, it should be used as a failsafe mechanism, or as a protocol for exception management. In general, because no single protocol is suitable for all situations in scientific computing, a multi-protocol system is needed that can benefit from the strengths of each one.
This multi-protocol design is being integrated into the Common Component Architecture Toolkit framework. The first step is a C++ implementation of SOAP RMI so that it directly interoperates with Java and C++ based components. Fortran components use existing Fortran-C++ interfaces to access messages, while Matlab uses its Java interface.