Summary
The distribution provides both client side access to Web Services and server side creation of Web Services. Currently only document/literal and rpc/encoded with HTTP Soap transport are supported on the client side. The server side currently works with several web servers(see below). It provides all services as document/literal over HTTP Soap transport. Documentation for the package, including examples can be found here. The distribution consist of several packages.
Mirrors
This project has the following public repositories:
- Core Tcl/Tk host -- This is the main repository. Please enter all tickets, checkin, etc here.
- Chisel App host
Documentation
Documentation for the tclws package is available at the following links:The client is known to work with several providers of Web Services (your mileage may very). Also these clients have been tested to work with the Web Services provided by the WS::Server (server side) package of tclws.
Web Servers
The server side works with the following web servers (see Web Server Settings for known required options):
- TclHttpd
- Apache with Rivet
- AOLserver
- WUB
- wibble
- Embedded mode (see Embedding)
- Microsoft Internet Information Server
Download
Release notes, ZIP and Tarball files are available at the Downloads page.
License
Standard BSD license.
Packages Required
The following packages are used (minimum versions specified):
- Tcl 8.6 (Releases fo the 2.x series require TCL 8.4
- tdom 0.8.1
- log from TclLib
- uri from TclLib
- struct::set from TclLib
- http from Tcl itself (min version 2.8.12 to have continue bug fixed https://core.tcl-lang.org/tcl/info/46b6edad51e645c7 (min Tcl 8.6.8), was needed for Microsoft WS)
Additionally, if you are running the TclHttpd on Windows, it is highly recommended that you use the iocpsock extension.
Lastly the following packages are additionally used in Embedded mode:
TLS Support may be acheved for embedded server or client by the presence of the following packages:
- tcltls https://core.tcl-lang.org/tcltls
- twapi from https://twapi.magicsplat.com/. Tested version: 4.4.0
Standards
TCLWS implements a limited set of standards used under the keyword "Web-Service".
Implemented standards
WSDL
WSDL describes an XML document (the WSDL file), which describes the methods and their parameters of the web service.
WSDL 1.1 is supported only. Spec: http://xml.coverpages.org/wsdl20000929.html
SOAP
SOAP describes the format of the call and response XML messages.
SOAP 1.0 is supported only. Spec: https://www.w3.org/TR/2000/NOTE-SOAP-20000508/
Missing features compared to the standards
Webservice call does not support namespace prefixes in subelement if not unique
As TCLWS only supports global namespace prefixes, it copies any namespace prefix in a subelement to the root. An error will rise if this causes an ambiguity.
Thus, the following WSDL will lead to an error:
<wsdl:definitions xmlns:q1="URI1" ...> <xs:element xmlns:q1="URI2" type="q1:MessageQ1"/>While the following two are o.k.:
<wsdl:definitions xmlns:q1="URI1" ...> <xs:element xmlns:q1="URI1" type="q1:MessageQ1"/>and
<wsdl:definitions xmlns:q1="URI1" ...> <xs:element xmlns:q2="URI2" type="q2:MessageQ1"/>