Monday, July 11, 2005

SoapSuds.exe Vs the Wsdl.exe

I have often seen developers getting confused over the similarity of the SoapSuds.exe and the WSDL.exe tools -- after all, both are used to generate proxies on the client side.

The Wsdl.exe tool creates a proxy class that derives from SoapHttpClientProtocol. This proxy does all the plumbing work of marshalling/unmarshalling using SOAP over HTTP.

The Soapsuds.exe tool creates a proxy class that is derived from System.Runtime.Remoting.Services.RemotingClientProxy which in turn subclasses System.MarshalByRefObject.
The RemotingClientProxy class takes over responsibility for serializing the proper messages according to the selected formatter and sends them from a bird’s view through the configured channel.

It's important to note that the Soapsuds.exe tool works only for ServerActivated objects using the Http channel.