Starting with 4S4C v1.2, the SOAP/COM dispatcher can be controlled via a configuration file. This makes it easy to write completely generic listeners. The file defines a list of COM Components and Interfaces to be exposed via SOAP and the namespaces that should be associated with them.
Config.xml is structured as follows
<mappings name='testService'> <mapping methodURI='http://simon.fell.com/calc' progid='Demo_server.calc' iid='{BC0E4845-B3F3-4080-B914-3F29FF8A06DF}' /> <mapping methodURI='http://simon.fell.com/strings' progid='Demo_server.calc' iid='{2F4178E5-8627-4930-942A-1EFBB3F4F54E}' /> <mapping methodURI='http://simon.fell.com/structs' progid='Demo_server.calc' iid='{63B54535-8599-4f3c-8718-59177D56F928}' /> <mapping methodURI='http://simon.fell.com/dual' progid='Demo_server.dualtest' iid='{E4482471-6E9D-429C-B33E-9D48E0010F03}' /> <mapping methodURI='http://simon.fell.com/addressbook' clsid='{5803B782-DF93-49E4-9105-ED31AB530511}' iid='{91D32B9C-8837-4D08-8F02-945A209E4DB1}' /> <mapping name='typesTest' methodURI='http://simon.fell.com/trickyTypes' progid='Demo_server.calc' iid='{02A1A326-4489-4b28-A6A9-91F1727672F3}' /> </mappings>each mapping entry specifies a methodURI, this is the namespace URI for the methodName element, for example to if you want to call the Calc functions in the demo server (mapping entry 1), your SOAP request would look like
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' xmlns:enc='http://schemas.xmlsoap.org/soap/encoding/'> <env:Body> <m:Add xmlns:m='http://simon.fell.com/calc'> <a>9</a> <b>4</b> </m:Add> </env:Body> </env:Envelope>See how the Add element specifies the relevant namespace URI.
Starting with v.1.3.7, the configFactory object [which manages the config.xml files], will watch for changes in each config.xml file it is caching, if it's changed, then it will drop the cached copy, and re-read the file. This allows you make config changes without having to restart IIS.