Web Services for Embedded Systems

The gSOAP Web services development toolkit is designed for coding SOAP/ XML web services in C and C++. The following is the characteristics of gSoap: 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).

the author has port gSoap to vXworks. In fact, it is written in ANSI C and easy to port other platforms. I have ported it to ARM7TDMI + uCLinux

for more infomation, please refer to author's website:

formatting link

formatting link

Reply to
yusibin
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.