SOAP (aiemmin Simple Object Access Protocol) on kevyt yhteyskäytäntö tietojen vaihtoon hajautetussa ympäristössä. SOAP-sanoma on tietojen lähetys lähettäjältä vastaanottajalle. SOAP-sanomia yhdistämällä voi suorittaa pyyntö/vastaus-malleja.
SOAP-sanomat ovat kuljettimesta riippumattomia, mutta ne toimitetaan useimmiten HTTP:n kautta, jotta yhtenäisyys olemassa olevan Internet-rakenteen kanssa säilyy. SOAP-yhteyskäytännön avulla voi tehdä sidontoja tunnistettuihin Web-palveluihin ja käyttää palveluja määrittämällä sanomapolun sanomien reititystä varten. SOAP-sanomia käytetään tekemään Web-palveluja koskevia kyselyjä UDDI-rekistereihin. Työympäristö tukee SOAP 1.1 -versiota.
SOAP on XML-perusteinen yhteyskäytäntö, joka määrittää jokaiseen sanomaan kolme osaa:
SOAP tukee kahta eri viestintätyyliä:
Etätoimintosarjakutsu (RPC): Kutsutaan toiminto, joka palauttaa tuloksen. Käytetään tavallisesti sellaisen SOAP-koodauksen yhteydessä, joka ei ole WS-I-yhteensopiva.
Document-tyyli: Kutsutaan myös asiakirjaperusteiseksi tai sanomaperusteiseksi tyyliksi. Kyseinen tyyli on edellisiä konkreettisempi ja vaatii enemmän ohjelmointityötä.
Hajautetuissa tietojenkäsittely-ympäristöissä koodaustyylit määrittävät, kuinka sovelluksessa määritetyt arvot muunnetaan tietyn käytännön vaatimaan muotoiluun tai tietyn käytännön vaatimasta muotoilusta. Muuntoprosessia kutsutaan peräkkäistykseksi ja peräkkäistyksen puruksi.
SOAP-määrityksessä määritetään SOAP-koodaustyyli:
SOAP-koodaus: SOAP-koodaustyylin avulla SOAP-määrityksen tietolajien arvoja voi peräkkäistää tai niiden peräkkäistyksen voi purkaa. Tämä koodaustyyli määritetään SOAP 1.1 -standardissa, ja se ei ole WS-I-yhteensopiva.
WSDL määrittää literaalisen XML-koodaustyylin:
XML-literaalikoodaus: Literaali viittaa siihen, että kyseinen asiakirja tulee lukea sellaisenaan tai koodaamattomana. Asiakirja peräkkäistetään XMI-asiakirjana, mikä merkitsee, että sanoman XML-koodi noudattaa WSDL:n sisältämää skeemaa. Literaalikoodausta käytettäessä jokainen sanoman osa viittaa konkreettiseen skeemamääritykseen. Literaalikoodaus on WS-I-yhteensopivaa.
SOAP-määrityksen tarkoitus on tuoda käyttöön ohjelmointikielestä riippumaton abstraktio yleisten ohjelmointikielten lajien käyttämille tietolajeille. SOAP-määritykseen sisältyy:
Kaikki SOAP-määrityksen muodostavat elementit ja tunnukset määritetään nimitilan URI-osoitteessa. SOAP-standardi määrittää säännöt, joiden mukaan tietolajeja rakennetaan. Projektikohtaisen XML-skeeman on määritettävä todelliset tietolajit. SOAP-määrityksen elementit on määritetty osoitteissa http://schemas.xmlsoap.org/soap/envelope/ ja http://schemas.xmlsoap.org/soap/encoding/.
SOAP-yhteyskäytännöstä on nykyään saatavilla eri toteutuksia. Esimerkiksi Apache Foundation on tuottanut Apache SOAP -yhteyskäytännön, joka kehittyi IBM-projektista SOAP4J, kuten myös ajonaikaiset Apache Axis- ja IBM WebSphere -ympäristöt. Web-palvelujen työkalut tukevat Apache SOAP 2.3-, Axis 1.0- ja IBM WebSphere -toteutuksia.
Vastaavuus määrittää tarkennetun XML-elementin nimen, Java-luokan nimen ja koodaustyylin välisen yhteyden. Vastaavuus määrittää, kuinka tietyssä koodaustyylissä tuleva XML-elementti, jolla on tarkennettu nimi, muunnetaan Java-luokaksi ja päinvastoin.
Lisätietoja Apache SOAP -toteutuksesta on osoitteessa xml.apache.org/soap. Lisätietoja SOAP-yhteyskäytännöstä on osoitteessa www.w3.org/TR/SOAP.