Tuesday, July 14, 2009

SOAP implementations: Axis2 vs gSOAP vs PocketSOAP

SOAP is a lightweight protocol for exchange of information in a decentralized, distributed environment. It is an XML based protocol that consists of three parts: an envelope that defines a framework for describing what is in a message and how to process it, a set of encoding rules for expressing instances of application-defined datatypes, and a convention for representing remote procedure calls and responses. There are several implementations of SOAP (different sources list up 80 SOAP implementations) and they differ in their support for class binding, ease of use and performance. Asix2, gSOAP and PocketSOAP will be shortly discussed in the following.
  • Axis2

    Apache SOAP was developed by IBM alphaWorks and donated to the Apache Software Foundation. It is a Java package, which uses its own object model (AXIOM) and Streaming API for XML (StAX) parsing to achieve, in order to increase performance. Axis functions as a plug into a servlet engine, such as Tomcat. That is, one simply add an Axis directory hierarchy to the Tomcat WEB-INF directory and adjusts the CLASSPATH under which Tomcat runs. The Axis distribution also includes tools for mapping between Java (bean) classes and XML elements/attributes as well as a TCP monitor in which one can see the SOAP messages going to and from a SOAP engine. Additionally the Axis architecture gives the developer complete freedom to insert extensions into the engine for custom header processing, system management, or anything else imaginable. However C/C++ implementations are also available. One of the key advantages of Axis2 is that it keeps logic and data in separate components. Users typically have two types of data models, static and runtime. Static data consists of AxisService, ServiceGroup, AxisOperation, AxisConfiguration and others. The dynamic data hierarchy consists of ConfigurationContext, ServiceGroupContext, ServiceContext, OperationContext and MesasgeContext. This also provides better support for concurrency handling.


  • gSOAP

    gSOAP is a cross-platform development toolkit for C and C++ SOAP XML Web services (SOAP1.1/1.2,WSDL1.1). gSOAP supports XML serialization of native C/C++ data types. Includes SOAP/XML engine, Web server, stub/skeleton compiler, WSDL tools, and much more. The gSOAP tools provide a SOAP/XML-to-C/C++ language binding to ease the development of SOAP/XML Web services and client application in C and C++. Most toolkits for C++ Web services adopt a SOAP-centric view and offer APIs that require the use of class libraries for SOAP-specific data structures. This often forces a user to adapt the application logic to these libraries. In contrast, gSOAP provides a C/C++ transparent SOAP API through the use of compiler technology that hides irrelevant SOAP-specific details from the user. The gSOAP stub and skeleton compiler automatically maps native and user-defined C and C++ data types to semantically equivalent XML data types and vice-versa. As a result, full SOAP interoperability is achieved with a simple API relieving the user from the burden of SOAP details, thus enabling him or her to concentrate on the application-essential logic. Additionally gSOAP supports pure C, which is essential for many system-oriented applications developed in C. Last but not least gSOAP uses XMLpredictive pull parsing, streamingmediatechniques,andhigh-performance and latency hiding methods, which leads to a performance that can surpass this of
    JavaRMI and IIOP.


  • PocketSOAP

    PocketSOAP is an Open Source SOAP client Component Object Model (COM) component, originally targeted for the PocketPC, that is now developed for Pocket PC and Windows 95, 98, Me, NT4.0 and 2000. PocketSOAP can make remote procedure calls to SOAP servers implemented with 4s4c, ROPE, Apache SOAP, SOAP::Lite, DM's SOAP/Perl and the XMethods SOAP Server. The package includes a Hypertext Transfer Protocol (HTTP) client for making HTTP based SOAP requests, but other transports can be added. PocketSOAP is distributed under the Mozila Public License (MPL). PocketSOAP includes the following features: SOAP Section 5 encoding support, support for document/literal style SOAP services (such as ASP.NET), attachments support via both DIME and SOAP with Attachments, Support for SOAP, HTTP 1.1 support including persistent connections, SSL, proxies, authentication, proxy authentication, redirects, cookies and compression.


No comments: