BACK TO MAIN PAGE
gSOAP Features
-
Unique SOAP-to-C/C++ binding: gSOAP provides an automated mapping of
native C/C++ and user-defined application data types to XML data types.
Data is serialized in XML "in-situ" by the pre-compiled encoding routines generated by the gSOAP compiler.
-
SOAP 1.1 compliant: supports all SOAP 1.1 features, except SOAP root.
-
SOAP 1.2 compliant: SOAP 1.1/1.2 support is fully automated (use soapcpp2 compiler options -1 and -2).
-
WS-I Basic Profile compliance: automatically reports potential
interoperability issues before starting a new project build and before
deployment (the default gSOAP setup is compliant, but please see WS-I Basic Profile Compliance Report for more details).
-
Platform independent: Windows, Unix, Linux, Pocket PC, Mac OS X, TRU64,
VxWorks, etc.
-
Integrated WSDL generator: for convenient Web Service publishing.
-
WSDL parser: for automated Web service application development.
-
UDDI v2: Includes UDDI v2 API and client-side example codes.
-
XML Schema parser: the WSDL parser can be used to parse XML schemas to
generate C or C++ code for the XML serialization of schema types. The schema
types are mapped to C and/or C++.
-
Pure C: supports the development of applications written in C.
-
C++ and STL: supports the development of applications written in C/C++.
Supports the XML serialization of STL strings and containers. The serializers
for C and C++ support
single class inheritance, use dynamic binding for polymorphic data,
arbitrary pointer structures such as lists, trees, graphs, cyclic graphs,
fixed-size arrays, (multi-dimensional) dynamic arrays, enumerations, bitmasks,
and more.
-
Legacy application integration: gSOAP is not a class library that offers SOAP-specific data structures.
gSOAP includes a true RPC compiler for SOAP that supports application-specific
C/C++ data types.
-
Efficiency: gSOAP has a very low memory overhead and very low SOAP RPC latencies which
are important properties for embedded and real-time systems.
-
Small memory footprint: Web service and client executables can be as small as 90K on Linux with a 150K total memory
footprint.
-
Multi-threaded stand-alone SOAP servers: automatic C and/or C++ source code generation for efficient SOAP Web services
(gSOAP 2.0 and higher). Load stress tests indicated that gSOAP has the best performance and scalability compared to other
Web services toolkits and implementations.
-
Example Web services and clients: gSOAP download packages includes numerous example client and service applications.
-
HTTP routing: the gSOAP package includes a router application for message forwarding and
to implement relay servers.
-
Remote Object Factory: the gSOAP package includes a stateful customizable remote object factory.
-
Security and Encryption: supports HTTPS/SSL.
-
Transactions: supports HTTP cookies and SOAP Headers.
-
SOAP Fault processing: customizable (client receive and service send).
-
SOAP Header processing: customizable (send and receive).
-
SOAP-over-UDP: send and receive messages in datagrams.
-
SOAP with attachment support (SwA): send and receive multipart/related MIME attachments.
-
SOAP with DIME: send and receive binary DIME attachments.
-
Streaming SOAP/XML/DIME parsing: the XML-schema specific parser is fast and efficient because the entire SOAP messages are
not buffered and a DOM is not constructed.
-
Flexible transport layer: gSOAP's I/O operations callback mechanism provides customizable transport layers.
-
One-way SOAP messages: support for SOAP 1.1/1.2 "one way" messages.
-
Compression: supports compression (HTTP and plain SOAP/XML messages).
-
Logging: provides request/response message logging.
-
Apache mod: visit Christian Aberger's Apache mod_gSOAP implementation for SOAP and .NET services for Apache HTTP server.
-
(Fast) CGI: supports CGI and FastCGI.
-
HTTP proxy: supports HTTP proxy servers.
-
HTTP Authentication: supports HTTP basic authentication.
-
HTTP Proxy Authentication: supports HTTP proxy basic authentication.
-
IPv6: supports IPv4 and IPv6.
-
Save and retrieve data in XML: gSOAP generates XML (de)serializers for application data types which allows application
data to be saved and retrieved as XML from e.g. files.
-
Interoperability features: gSOAP is one of the few SOAP toolkits that supports the full range of SOAP 1.1 RPC features
including multi-dimensional arrays, sparse arrays, and polymorphic types. For example, a remote method with a base class parameter may accept derived class instances from a
client. Derived class instances keep their identity through dynamic binding (see example 12, gSOAP supports method overloading and overriding).
-
Proven interoperability: gSOAP participates in WhiteMesa's interop lab for interoperability testing.
-
Socket buffering: used to increase efficiency, but
full SOAP message buffering is not used. Instead, a three-phase
serialization method is used. As a result, large data sets
such as base64-encoded images can be transmitted (and received) by small-memory devices such as PDAs.
-
Memory management: supports garbage collection strategies.
-
Plug-in data type (de)serializers.: support for user-defined (de)serializers of data in XML/SOAP.
-
No need to rewrite existing C/C++ applications for Web service deployment. However, parts of an application
that uses unions, pointers to sequences of elements in memory, and void* need to be
modified, but only if the data structures that adopt them are required
to be serialized or deserialized as part of a remote method invocation.
-
Three-phase marshalling: 1) analysis of pointers, single-reference, multi-reference,
and cyclic data structures, 2) HTTP message-length determination, and 3)
serialization as per SOAP 1.1 encoding style or user-defined encoding styles
-
Two-phase demarshalling: 1) SOAP parsing and decoding, which involves the
reconstruction of multi-reference and cyclic data structures from the payload,
and 2) resolution of "forward" pointers (i.e. resolution of the forward
href attributes).