SOAP


Simple Object Access Protocol provides a way for applications to communicate with each other over the Internet, independent of platform. Unlike OMG's IIOP, SOAP piggybacks a DOM onto HTTP (port 80) in order to penetrate server firewalls, which are usually configured to accept port 80 and port 21 (FTP ) requests.

SOAP relies on XML to define the format of the information and then adds the necessary HTTP headers to send it.
SOAP was developed by Microsoft, DevelopMentor, and Userland Software and has been proposed to the Internet Engineering Task Force (IETF ) as a standard.


In the Beginning: SOAP 98
When SOAP started in early 1998, there was no schema language or type system for XML (in fact, XML 1.0 had just become a full Recommendation that quarter). If you look at earlier versions of the SOAP spec (including XML-RPC, which was subsetted from the 1998 SOAP spec), most of the focus was on defining a type system. The original type system of SOAP (and XML-RPC) had a handful of primitive types, composites that are accessed by name (a.k.a. structs) and composites accessed by position (a.k.a. arrays). Once we had these representational types in place, we modeled behavioral types by defining operations/methods in terms of pairs of structs and, at least on the DevelopMentor and Microsoft sides, aggregated these operations into interfaces. Hence the RPC flavor that people associate with SOAP.


SOAP is what most people would consider a moderate success. The ideas of SOAP have been embraced by pretty much everyone at this point. The vendors are starting to support SOAP to one degree or another. There are even (unconfirmed) reports of interoperable implementations, but frankly, without interoperable metadata, I am not convinced wire-level interoperability is all that important. It looks like almost everyone will support WSDL until the W3C comes down with something better, so perhaps we'll start to see really meaningful interoperability in the very near future.
Don Box, xml.com