SOAP

SOAP (algselt tähenduses "Simple Object Access Protocol" 'lihtne objektipöördusprotokoll') on arvutivõrkudes kasutatav protokoll, millega veebiteenused vahetavad omavahel struktuurseid andmeid. Kasutab andmete ülekandmisel XML-vormingut. Reeglina eeldab sõnumite kooskõlastamiseks ja ülekandmiseks ka teisi rakenduskihi protokolle (millest tähtsamad on RPC ja HTTP). Veebiteenuste protokollistiku aluskihis saab SOAPi kasutada sõnumside raamistikuna, et sellel veebiteenuseid üles ehitada.
Praktilise näitena SOAP protseduuride kasutamisest võib tuua veebiteenuseid kasutavat saiti (näiteks majahindade andmebaas), millele saab saata otsinguparameetreid sisaldavaid SOAP sõnumeid. Sait tagastab päringu tulemused (hind, asukoht, lisaandmed jms) XML-vorminguga dokumendis. Kuna andmed tagastatakse standardses masinloetavas vormingus, on need kasutatavad kolmandate osapoolte veebisaitidel.
SOAP-arhitektuur koosneb mitut kihti hõlmavatest spetsifikatsioonidest sõnumivormingule, sõnumivahetusmustrile, transpordiprotokolli sidumisele, sõnumitöötlusmudelile ja protokolli laiendatavusele. SOAP põlvneb XML-RPC protokollist.
Ajalugu.
SOAP oli lühend sõnadest "Simple Object Access Protocol" (sõna-sõnalt: lihtne objektipöördusprotokoll), kuni versioonini 1.2, mis ütleb, et SOAP ei ole enam lühend. Versioon 1.2 on alates 24. juulist 2003 soovitatud World Wide Web Consortiumii (W3C) poolt. Sarnasuse tõttu võib ekslikult lühendit SOA-ga (Service Oriented Architecture) samastada, kuid olemuselt on need väga erinevad.
SOAP arendati Microsofti soovil välja töötada objektipöördusprotokoll, sellega tegelesid Dave Winer, Don Box, Bob Atkinson ja Mohsen Al-Ghosein. SOAP spetsifikatsiooni haldab nüüd XML-protokolli töörühm W3C-s.
Transpordimeetodid.
SOAP kasutab transpordiprotokollina interneti rakenduskihi protokolli. Kriitikute sõnul on see protokolli väärkasutus ja seega ei täida hästi oma otstarvet. SOAP-i pooldajad on toonud analooge protokollide mitmetasandilise kasutamisega, et protokollide vahel tunneleid tekitada.
SOAP kasutab transpordiks SMTP-d ja HTTP-d, mis on mõlemad korrektsed rakenduskihi protokollid. HTTP on nendest levinum, sest ühildub paremini tänapäevase interneti infrastruktuuriga. Täpsemalt, tulemüürid ei takista HTTP töötamist. Samuti on võimalik SOAP-i kasutada läbi HTTPS-i (rakenduskihis sama mis HTTP, kuid transpordiprotokoll on krüpteeritud) kas lihtsa või mõlemapoolse autentimisega; see on soovitatav WS-I veebiteenuste turvameetod, nagu väidab WS-I Basic Profile 1.1. See on suureks eeliseks teiste jaotatud protokollide ees, nagu GIOP/IIOP või DCOM, mida tulemüürid tavaliselt tõrjuvad. SOAP läbi AMQP on veel üks võimalus, mis on vahest toetatud.
XML valiti standardseks sõnumivorminguks, kuna seda kasutavad mitmed suurkorporatsioonid ja avatud lähtekoodi arendusprojektid. Lisaks, lai valik tasuta tööriistu hõlbustab SOAP-i kasutamist. Pikaks kippuval XML-i süntaksil on nii häid, kui ka halbu külgi. Seda on lihtne inimestel lugeda, sisaldab tõrketuvastust ja aitab ära hoida selliseid koostööprobleeme, nagu baidijärjestus. Samas võib see halvata töötluskiirust ja olla kohmakas. Näiteks CORBA, GIOP, ICE ja DCOM kasutavad palju lühemaid, binaarseid sõnumivorminguid. Teisest küljest, olemas on riistvaralisi seadmeid, mis kiirendavad XML sõnumite töötlust. Suurema läbilaske saavutamiseks uuritakse binaarse XML-i kasutusvõimalusi.
Näited SOAP sõnumitest.
Päring.
&lt;soapenv:Envelope
 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
 http://schemas.xmlsoap.org/soap/envelope/"&gt;
 &lt;soapenv:Body&gt;
 &lt;req:echo xmlns:req=
 "http://localhost:8080/axis2/services/MyService/"&gt;
 &lt;req:category&gt;kuulutused&lt;/req:category&gt;
 &lt;/req:echo&gt;
 &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;