United eWay tWSDL Plan: System Overview
Why do we need a system such as tWSDL will provide? Let me build up the rational for a system, starting with the current situation.
tWSDL Server API

tWSDL Server
Client
HTTP Doc SOAP Doc TYPE Doc TYPES WRAP API
Protocol Checker Type Checker INVOKER
tWSDL Core API & tWSDL DB
Protocol Server Typer WRAPPER
AOLserver Tcl API

tWSDL Core Components

The tWSDL Server is an application which will run on top of an instance of AOLserver. AOLserver has a built in Tcl interpreter and an associated Tcl API. In addition, AOLserver allows installation of additional C and Tcl Modules. C Modules are accessed via an associated Tcl API. All exposed Tcl API are available to the tWSDL System.

The tWSDL System is composed of several components. There will be a Core tWSDL API which will be used to maintain and manage all aspects of the System. This Core API will be extensible in several areas for various reasons.

One extension area will be the Wrapper. A Core set of API will allow the developer to wrap any generic function. Extensions of this basic API will make it easier to create Wrappers for specific Tcl API for which some otherwise necessary information can be derived. For example, a simple Wrapper could assume that all inputs and outputs are strings. Simple introspection would allow for inputs to be named. Another example could be for database procedures where the types can be looked up in a data dictionary. The Wrapper creates a function which takes a representation of an XML document and returns another XML document. The Wrapper is run once to create a tWSDL application. The API generated by the Wrapper will not be a localized API. It should be possible to package and move to another system without the need to rerun the Wrapper. One additional note on Wrapper extensions: it is also possible that an entirely different Wrapper can be used. The only requirement on the Wrapper is that it create a procedure which takes an XML document of the correct type and returns another XML document of the correct type. In practice, these XML documents (their in memory representation) will be Tcl namespace references.

The Typer is another potential area for extension. The Core API will cover the allowable methods of creating types. A similar line of reasoning for Wrapper extensions can be applied to the Typer. In both cases, extensions will either make an assumption which limits the amount of data needed, or will be able to find the data needed from another source.

Following WS-I Basic Profile, tWSDL will only support SOAP over HTTP. However, it should be possible to add additional protocols as an extension.

Several components will be relatively fixed. These will be the Invoker, the Type Checker and the Protocol Checker. Each of these components will operate under the direction of the tWSDL Core.

A tWSDL Application

Before going into more details about the Server in operation, let's note a few points about how a tWSDL Application will come to life.

Using the Core tWSDL API, a developer will write a script which will define the Application. This script should handle the generation of the desired tWSDL Application. A generated tWSDL Application will consist of several parts:

  • A WSDL File: A Web Sevice Description defines the public interface of the Web Service. In the case of tWSDL, this file should contain ALL the information needed to use the service.
  • A WRAP API: This consists of a series of API which will be called by the Invoker to perform the Service.
  • New Types: Any types defined in the script will be added to the tWSDL DB. The tWSDL DB will be a collection of all data needed to run all tWSDL Applications in a particular AOLserver installation. On paper the tWSDL DB will just be a series of scripts which load data into memory. The in memory representation will be Tcl Namespaces (without procedures).
  • New Registered Procs (Bindings): A startup file for the Application will use registered procs to 'bind' a service to the required address/port during server startup. The registered procs will invoke the tWSDL Core to handle the request.
  • Once the Service is loaded, a browsable copy of the WSDL Service Description and SOAP Message examples will be published.

Layered API Client
tWSDL Client
Client API TYPES TYPE Doc SOAP Doc HTTP Doc
Type Checker Protocol Checker
tWSDL Core API & tWSDL DB
Typer Protocol Client
Tcl API AOLserver
Server