Before an object can be sent across the transport channel, it needs to serialized and packed into a data format that can be transmitted across the wire. At the other end of the wire, the serialized data is read and deserialized back to the actual object or type that it represents. The Serialization is done by message-serialization formatters that convert the field or object's state into a format that is suitable for storage or transmission. The .NET framework provides you with two message-serialization formatters out-of-the-box. They include a binary serialization formatter which converts an object's state into a binary stream and a SOAP serialization formatter which converts it into an XML string representation that's human readable. The binary serialization formatter is slightly faster.
But the SOAP serialization formatter is the way to go when talking to other web services in the internet deployed in other platforms that typically accept and respond only to SOAP conformant requests from consumers. Typically, you need not be concerned about how the remoting runtime packs the method call and parameters into a SOAP envelope during serialization. The HTTP channel's default SOAP message formatter automatically does this for you. You could use an application like tcpTrace (see the Related links section for more information on how you could obtain and use tcpTrace ) to snoop in on the SOAP packets being sent across the channel which could help you to track problems during debugging.