A számítástechnikában a SOAP (Simple Object Access Protocol) egy protokoll, amelyet webszolgáltatások hálózaton keresztüli kommunikációjához terveztek. Az üzenetek XML-alapúak és általában más, alkalmazás rétegbeli protokollokra támaszkodva továbbítódnak, például Távoli Eljáráshívás (Remote Procedure Call, RPC) vagy a Hypertext Transport Protocoll (HTTP) protokollokra.
Egy példa arra, hogy működnek a SOAP eljárások. Egy SOAP üzenetet küldhetünk egy webszolgáltatással rendelkező weboldalnak, pl. egy ingatlanügynökségnek, melyben megadjuk a keresési paramétereket. Az oldal egy XML dokumentumot küld vissza a kért adatokkal, pl. az ingatlanok árai, helye, tulajdonságai. Mivel ez az adat a gépek számára könnyen feldolgozható formátumban van, így egyszerűen integrálható egy weboldalba vagy alkalmazásba.
A SOAP architektúra több réteget specifikál: üzenetformátumot (MessageExchangePatterns, MEP), az alatta lévő szállítási protokollt, az üzenetfeldolgozó modellt és a protokoll bővíthetőségét.
A SOAP az XML-RPC örökösének tekinthető.
Története
A SOAP a WSDL és a UDDI mellett a webszolgáltatások harmadik alapvető elemét képezi.
A név eredetileg az angol Simple Object Access Protocol rövidítése volt, de a szabvány 1.2-es verziójától kezdve a Simple Object Access Protocol nevet már nem használják, mert az elnevezés félrevezető volt.
A SOAP szabványt a W3C tartja karban.
A SOAP szabványt eredetileg Dave Winer, Don Box, Bob Atkinson, és Mohsen Al-Ghosein tervezték 1998-ban (egy Microsoft projekt keretein belül), mint egy objektum-elérési protokollt.
Specifikáció
A SOAP által specifikált üzenetküldő keretrendszer az alábbi részekből áll:
A SOAP feldolgozási modell, ami leírja, hogy kell feldolgozni a SOAP üzeneteket
A SOAP bővíthetőségi modell, mely meghatározza a SOAP modulok és tulajdonságok koncepcióját
A SOAP alsóbb protokollhoz csatlakozó keretrendszer szabályokat definiál arra vonatkozóan, hogy kell csatlakozni egy alsóbb réteghez, hogy SOAP üzeneteket tudjunk továbbítani
A SOAP üzenetszerkezet definiálja, hogy kell felépíteni egy SOAP üzenetet
Feldolgozási modell
A SOAP feldolgozási modell egy elosztott feldolgozási modellt definiál a résztvevői, a SOAP csomópontok számára, valamint azt, hogy hogy dolgozza fel a fogadó az üzenetet. A következő SOAP csomópont típusok lehetnek:
SOAP küldő
Egy csomópont, ami üzenetet küld
SOAP fogadó
Egy csomópont, ami üzeneteket fogad
SOAP üzenet útvonal
Csomópontok egy halmaza, melyeken egy üzenet áthalad
Kezdeti SOAP küldő
Az a csomópont, ahonnan az üzenet útvonala elindult
SOAP közvetítő
Egy olyan csomópont, amely küld és fogad is üzeneteket. Feldolgozza a beérkezett üzenetet és továbbítja a végső cél felé.
Végső SOAP fogadó
Egy olyan SOAP fogadó, mely a SOAP üzenet célpontja. Ennek a feladata az üzenet törzsének a feldolgozása. Bizonyos körülmények között előfordulhat, hogy a SOAP üzenet nem éri el a végső fogadót, például egy SOAP közvetítőnél felmerült probléma miatt. Egy végső SOAP fogadó nem lehet közvetítő is egy adott üzenet esetén.
Továbbítási eljárások
Mind a HTTP, mind pedig az SMTP lehetséges szállítási protokollok SOAP üzenetek továbbítására, ugyanakkor a HTTP szélesebb körben elfogadott, mivel jól együttműködik az internet mai szerkezetével, különösen jól működik együtt a HTTP a tűzfalakkal. A SOAP ugyanakkor továbbítható HTTPS protokollon keresztül is.
Ez az előnye a többi elosztott protokollal szemben, úgy mint a GIOP/IIOP vagy a DCOM, amiket kiszűrnek a tűzfalak.
Üzenetformátum
Az XML formátumra esett a választás, mint standard üzenetformátum, mivel széles körben használt a nagyvállalatoknál és a nyílt forrású fejlesztéseknél. Ezen kívül rengeteg szabadon elérhető eszköz segíti a SOAP alapú megoldásra való áttérést. Az XML szintaxisa lehet előny és hátrány is egyszerre. Az emberi szem számára könnyen olvasható, könnyebb a hibadetektálás és áthidalja az együttműködési problémákat (pl. endianizmus), emellett viszont lassan és nehezen feldolgozható. Pl. a CORBA egy sokkal egyszerűbb és rövidebb bináris üzenetformátumot használ. Másrészről viszont lehetőség van szoftveresen felgyorsítani az XML feldolgozást.
A SOAP elég sokoldalú, így különböző szállítási protokollokon keresztül is kommunikálhatunk vele. A szabvány szerint HTTP-t használnak, de működik SMTP-vel vagy JMS-sel is.
Mivel a SOAP jól összefér a HTTP kérés/válasz modelljével, könnyedén átjut a tűzfalakon és proxykon anélkül, hogy a SOAP protokollt módosítani kellene.
Hátrányok
Az XML bőbeszédű formátuma miatt a SOAP lassabb lehet, mint mondjuk a CORBA üzenetküldési modellje. Ez nem okozhat problémát kis méretű üzenetek estén.
Ha a HTTP-re támaszkodunk mint szállítási protokoll, és nem használjuk a WS-Addressing vagy ESB-t, a kommunikáló felek szerepei rögzítettek. Csak az egyik fél (kliens) használhatja a másik fél szolgáltatásait.