Any networked computing environment must be able to invoke methods across both process and physical machine boundaries. This capability requires a means for locating a remote process, serializing method parameters, invoking the remote method, and deserializing the return value—all in a secure manner. Many protocols currently provide this functionality including DCE, Microsoft’s DCOM, CORBA’s IIOP, Java RMI and EJB, and many others. However, they all require proprietary class libraries to be loaded on both the client and remote host in order to inter-communicate. This requirement has greatly restricted distributed application interoperability.
Simple Object Access Protocol (SOAP) is a natural evolution of existing distributed technologies. SOAP is an encoding of a remote method invocation (method parameters, return type, and error codes) within an XML document that can be easily understood by any client using an XML parser. (XML parsers are freely available in every programming language and platform combination.) The SOAP document is typically sent over HTTP, the core protocol of the Web. HTTP enables greater interoperability because firewalls typically don’t block HTTP traffic, and it provides greater security because encryption is readily available through the use of Secure Sockets Layer (SSL).