Note: This is only a draft
Simple Object Access Protocol, or SOAP, is an incredibly prominent buzzword lately, but does it really live up to the hype? They answer is a definitive yes. Like any tool, SOAP is not the answer to every question, but when a hybrid application calls for RPC it really shines.
So what exactly is it that makes SOAP so much better than any other RPC protocol? For one it is composed in XML and that's just fine. The killer is really the Web Service Definition Language, or WSDL, though. WSDL's power is derived from the fact that XML supports namespaces. A WSDL document is composed of the description of messages, bindings and data types; data types are described by an embedded or external XSD schema. That's right, the same format (Schema) you use to describe XML documents is used to describe input and return types of the SOAP methods your service exposes. There are primitives in the XSD namespace such as int, float, string, and boolean which all other simpleTypes and complexTypes are composed of. [This shifts the discussion to XSD].
If the ability to describe methods and data types isn't enough, most SOAP libraries take care of mapping transparently. For example PHP5's SOAP server implementation (good, but not great because the language lacks [complete/good] reflection and type hinting) allows you to return an arbitrary class and automatically maps fields to elements and attributes of same name described in your XSD. Apache Axis takes it one step farther and doesn't require you to write a line of WSDL; it takes care of it all for you using runtime reflection and a simple WSDD (which maps Java classes to XML elements) to generate the WSDL, Schema et. all.
Both languages are also blessed with tools to generate stub code from an existing WSDL document. This is important because it allows you to take an existing web-service implementation and clone it in another language without your consumer apps ever knowing a thing about it! The only thing that may change is the end point URL, but that doesn't even matter if the WSDL document is accessible from the same location; the end-point is defined within the WSDL!