Before embarking on a new software project it is important to consider prior projects covering the same or similar functionality. The immediate ancestor of Web Services is SOAP. Within WSDL, SOAP is considered as a wrapper and transport; therefore WSDL is much broader than a software package which provides SOAP services.
Most software projects which are more than a year old (prior to March 2005), are extensions of SOAP projects. In particular they are extensions of SOAP-RPC.
Axis is essentially a SOAP engine -- a framework for constructing SOAP processors such as clients, servers, gateways, etc. The current version of Axis is written in Java, but a C++ implementation of the client side of Axis is being developed.But Axis isn't just a SOAP engine -- it also includes:
Axis is the third generation of Apache SOAP
- a simple stand-alone server,
- a server which plugs into servlet engines such as Tomcat,
- extensive support for the Web Service Description Language (WSDL),
- emitter tooling that generates Java classes from WSDL.
- some sample programs, and
- a tool for monitoring TCP/IP packets.
So Apache Axis is mostly a SOAP Engine. I looked at Apache Axis to see if there was any functionality that we could offload, or to use as a library in tWSDL. Since tWSDL has a component architecture, there are any number of ways that this could be possible. For instance, a Tcl interface could just hand off everything to an Axis Server.
However, a good read through the Introduction to Apache Axis leads to the opposite conclusion: tWSDL may end up being a good way to interface a Java application (or any application running on the server) via WSDL!
Why? Apache Axis fails in a number of important respects:
WSDL moves far beyond SOAP by defining an abstract, language neutral interface to an application. This definition allows for type definition and type checking prior to application invocation. In addition, this new functionality reduces the complexity of the protocol to which it is bound. The protocol can now deal with transport issues and not with encoding details. On the client side, WSDL provides a short path to a functional set of API to interact with the WSDL Application, again providing features such as type checking, error handling, and of course message construction and transport. Client side programming will feel very much like a using a Database API.