SOAP, the Simple Object Access Protocol, provides a simple and lightweight mechanism for exchanging structured and typed information (objects) between peers in a decentralized, distributed environment using XML [ExtensibleMarkupLanguage]. It consists of three parts: an envelope that defines what is in a message and what to do with it; a set of encoding rules for expressing datatypes, and a convention for implementing RemoteProcedureCalls and responses. Summed up, SOAP is a serialization protocol.
- XML documents for encoding of invocation requests and responses.
- XML Schema for describing the types
- XML Namespaces for describing the requests.
- Transmission of SOAP envelopes via HyperTextTransferProtocol (HTTP), SimpleMailTransferProtocol? (SMTP), or other protocols. Section 5 of the spec specifically addresses HTTP bindings.
See
SoapDiscussion,
SoapDoesntRequireHttp,
RestInSoap.
Links:
Implementations of SOAP:
On this wiki please use
MicrosoftXml for discussions and information sharing regarding this.
- WebService implemented using various Soap implementations has to be tailored before they can interconnect. See http://www.fawcette.com/vsm/2002_01/magazine/columns/webservices/default_pf.aspx for some examples of what else is needed.
- DevelopMentor has already provided implementations for the PerlLanguage, the JavaLanguage (see http://discuss.develop.com/archives/wa.exe?A2=ind9912&L=soap&F=&S=&P=26408) (CM), and of course COM. (though somewhat ironically, at the time of this writing, the COM implementation has yet to be released! ;)
- IBM's implementation: http://www.alphaworks.ibm.com/tech/soap4j (now handed over to the Apache project)
- Apache Project implementation of SOAP in Java, derived from IBM work: http://xml.apache.org/soap
- There is an Apache (web server) module "mod_soap" (http://soap.sourceforge.net/).
- Scarab (http://casbah.org/Scarab/) is an open source communications library implementing protocols, formats, and interfaces for writing distributed applications, with an emphasis on low-end and lightweight implementations. There are implementations of Scarab in Java, Python, Perl, and C.
- soaplib.py (http://www.pythonware.com/products/soap/) for the PythonLanguage.
- SOAP Smalltalk Reference Implementation(http://wiki.cs.uiuc.edu/CampSmalltalk)
- SoapLite? http://www.soaplite.com
- Ximian's C Library implementation http://lists.gnome.org/archives/gnome-announce-list/2001-May/msg00045.html
- A PHP SOAP server - NuSOAP: http://dietrich.ganx4.com/nusoap/index.php
There are
tons of other implementations at:
http://www.soapware.org/directory/4/implementations
Particular things to note:
- SOAP does not tie you to any MicroSoft technology (see the list of implementations above).
- SOAP does not necessarily tie you to the HyperTextTransferProtocol. Other TransportProtocols can be used to transmit the packets. For example, the SimpleMailTransferProtocol? is often discussed for queuing packets. Early versions of SOAP seemed to tie you to the HTTP; there was some discussion of whether or not that was true below. However, the latest specification clearly states:
It is worth noting that the rules governing XML payload format in SOAP are
entirely independent of the fact that the payload is carried over an HTTP
transport.
--
DrewMarsh (refactored 2/10/2000)
A writeup on SOAP Basics, taken from Professional XML Web Services, can be found at http://www.vbip.com/books/1861005091/chapter_contents.asp
Is it called SOAP, because it creates bubbles without content? -- AnonymousCoward
CategoryWebServices CategoryAcronym CategoryXml