XSoapExt is a fast, lightweight C++ library for SOAP and Web service utilities.
High performance and flexibility is the major concern of XSoapExt.
Generic programming is the fundamental programming style in XSoapExt.
Some of XSoapExt highlights:
- Supports SOAP 1.1.
- Supports HTTP 1.0 and part of HTTP 1.1 and their binding to the SOAP.
- The core XML internal representation is XML Query Data Model.
- Tuned for high performance and small footprint.
- Supports binary XML (BXSA: Binary XML for Scientific Applications) binding for SOAP:
BXSA is a binary XML format especially suited for those data types (like
double, array) which are common in scientific computing applications;
- Supports the WS-Addressing and WS-Eventing specification:
An easy to use asynchronous messaging with built-in WS-Addressing.
Event source, sink and subscription are also supported.
- Provides a wrapper class and extension module for Python:
Python users can use the classes and functionality of XSoapExt
interactively in the Python environment.
- Supports dynamic invocation based on WSDL:
Dynamically build the invocation from the schema and type information in
the WSDL document.
- Supports C++ object binding (conforming to WSIT interface) [work in progress]:
Automatically bind an object of a C++ class to/from its XML data model.
- Automatic stub/skel generation based on WSDL. [work in progress]
- Supports streaming channel when extremely high performance is required. [work in progress]
Figure 1:
Structure of XSoapExt
 |
XSoapExt can be divided into 4 sub-layers as shown in 1.
- Transportation Layer:
XSoapExt uses HTTP 1.0 as the default transportation protocol;
In addition a binary message transport protocol XBMP,
which is based on the binary encoding schema XBS,
is also supported;
- XML encoding Layer:
The functionality of this layer is the de/serialization of the XML data model.
The standard XML 1.0 is supported for general textual XML,
while a binary XML serializer is also supported for binary XML
representation (i.e., BXSA).
- Soap Message Layer:
This layer is a collection of SOAP/XML message oriented operations.
The core is the implementation of the XML Query Data Model (XQDM).
Based on this is built a SOAP 1.1 implementation.
Above these some WS specifications have been implemented, or are in the
process of being implemented;
WS-Eventing (source, sink, subscription) and WS-Addressing specification
are implemented.
WSDL builder is another important part of this layer,
above which a dynamic invoker is provided for WSDL-oriented invocation.
An alternative set of interface to the layer is the streaming, SOAP message interface,
in which an explicit XQDM is not built for message processing.
This streaming strategy is helpful for performance,
but limits the flexibility of the message processing for some
specifications, such as WS-Eventing and WS-Addressing.
- RPC Layer:
In this layer, the XML message will be bound to C++ data object.
A SOAP invocation will be bound to the invocation of a C++ functor.
The data-binding interface is called WSIT, which is used in Proteus;
A stub/skel generator can generate the data-binding code according to a WSDL file.
Similarly to the SOAP Message Layer, data binding can be implemented
in a non-streaming style or streaming style;
If it is in the non-streaming style, a explicit XQDM data model will be created to represent the data.
Only in CVS.
- Wei Lu, welu@cs.indiana.edu
- Kenneth Chiu
This document was generated using the
LaTeX2HTML translator Version 2002-2-1 (1.71)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 -nonavigation introduction.tex
The translation was initiated by Wei Lu on 2005-05-24
Wei Lu
2005-05-24