4S4C aka Simon's SOAP Server Services For COM
NOTE : 4s4c has moved homes !, the latest info & downloads is available at http://www.4s4c.com/4s4c/
This is a COM component that will invoke methods on COM objects (via any automation compatible interface),
from a SOAP request message, and return the results as a SOAP response message.
The Dispatcher component uses the Apache.org Xerces-C SAX2 Parser for parsing
the request XML. (there are no dependencies on MSXML), and is largely driven by the Type Information for the method being called, there is no requirement
for a separate services or schema description. The bulk of the work so far has gone into the SOAP->COM dispatcher, which supports
most automation types including 1 dimensional safearrays and complex types which are mapped to structures (aka UDT's)
Included are two listener applications, one for HTTP (using ASP), and one for SMTP (using the Windows 2000 SMTP Server)
The SOAP side has been tested for interop with the following SOAP Toolkits, and contains sample clients for all three
There is a live HTTP Endpoint available for testing with at http://www.razorsoft.net/ssss4c/soap.asp, this hosts the demo server component,
you can try out the IE5/MSXML demo from http://www.razorsoft.net/ssss4c/default.asp.
Or run the Perl tests with perl -w add.pl www.razorsoft.net 80 /ssss4c/soap.asp
My thanks to Peter Drayton for hosting this.
There is a live SMTP Endpoint available for testing with, simply send a _plain text_ email to
soap-listener@zaks.demon.co.uk, with the following request in the email body
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:doubler xmlns:m="http://simon.fell.com/calc">
<nums SOAP-ENC:arrayType="xsd:int[5]">
<number>10</number>
<number>20</number>
<number>30</number>
<number>50</number>
<number>100</number>
</nums>
</m:doubler>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
This is mapped to the following COM method
HRESULT doubler ( [in,out] SAFEARRAY(long) * nums ) ;
Improvements for v1.2
- Added configuration based mappings for COM objects, using the namespace URI of the method element
- Generic ASP listener provided, that uses the configuration support.
- Added support for VT_DATE being mapped to xsd:timeInstant
- Parameter names / order are now enforced as per Section 7 of the SOAP 1.1 specification
- Added documentation
- Made Windows Installer based install package
- Moved from SAX to SAX2 in Xerces-C, for better namespace support
- SMTP listener modified to use config file, and remove hard coded email address, should now work for anyone without re-building
- Added base64 encoding / decoding for BYTE Arrays (thanks to Werner Aerts for pointing it out)
- Fix for [dual] interfaces having their [out,retval] parameters dropped in the response (thanks to Werner Aerts for pointing it out)
- Response SOAP message now correctly encodes illegal characters (allowing you to return embedded XML as a string)
- xsi & xsd namespaces changed to match spec, inline with the recent Apache change (you'll need Apache SOAP 2.0 to work with this version)
- Tested interop with the July release of the MS SOAP Toolkit
- Tested interop with the DM SOAP/Perl 0.25 release
- The two versions of requestHelper.dll (W2K & NT4) folded into a single version
- A bug in the NT4 version of requestHelper.dll that caused seemingly random parser errors was fixed
Coming Up
These are the idea's i'm kicking around for the next version(s).
- Support Multi-ref accessors, now there's a couple of other toolkits that supoort this, it should be easier to test.
- Header processing
- Automatic generation of SDL, SCL & NASSL (which ever is left standing after the dust settles)
- Expand the Array support to include multi-dimension arrays, and the other array styles
You can read the online doc's, or dive straight in and download the components.
Download the binary release, v1.2 here, this requires Windows Installer 1.1
Download the whole shooting match, v1.1 here
Download the whole shooting match, v1.0 here
Currently the source code is not available. I will be open sourcing all the code on either an Apache style open source license, or using the LGPL.
However I'm still sorting out all the issues releted to this, it will be available soon.
Back to Simons COM stuff
(c) 2000 Simon Fell, this page last updated 21 August 2000