SOAP

SOAP (původně Simple Object Access Protocol) je protokolem pro výměnu zpráv založených na XML přes síť, hlavně pomocí HTTP.

Formát SOAP tvoří základní vrstvu komunikace mezi webovými službami a poskytuje prostředí pro tvorbu složitější komunikace.

Existuje několik různých druhů šablon pro komunikaci na protokolu SOAP. Nejznámější z nich je RPC šablona, kde jeden z účastníků komunikace je klient a na druhé straně je server. Server ihned odpovídá na požadavky klienta.

SOAP je nástupce XML-RPC, ačkoliv si zapůjčuje jeho způsob přenosu dat a další vlastnosti. Obálka, hlavička a tělo komunikace je ale pravděpodobně z WDDX.

Původně ho navrhl Dave Winer, Don Box, Bob Atkinson a Mohsen Al-Ghosein v roce 1998 za podpory firmy Microsoft (kde tou dobou Atkinson a Al-Ghosein pracovali). Dnes je SOAP specifikace držena XML skupinou tvořící internetové protokoly z W3C konsorcia.

Formy přenosu

Jako aplikační vrstva pro protokol SOAP lze použít protokol HTTP i SMTP (ale HTTP dosáhl daleko většího uplatnění; je to především proto, že HTTP je prakticky základ dnešní internetové infrastruktury). Díky tomu může SOAP jednoduše procházet přes firewall, což je jeho hlavní výhoda oproti jiným distribuovaným protokolům, jakým je např. DCOM, které jsou na firewallu většinou zakázány.

Jako standard pro přenos SOAP zpráv byl zvolen formát XML. Tento formát byl vybrán pro svou rozšířenost a dostupnost vývojových nástrojů nabízených jako opensource nebo freeware (právě proto, že tyto lze používat volně).

Zdlouhavá syntaxe XML má své výhody i nevýhody. Je jednoduše čitelná pro člověka, ale počítač ji musí složitě parsovat, a to stojí hodně procesorového času a operační paměti (oproti tomu CORBA, GIOP nebo DCOM mají zápis zpráv pro komunikaci daleko kratší, binární, který je ale pro člověka nečitelný). Na druhou stranu vývoj počítačů jde rychle dopředu, v důsledku čehož tato nevýhoda přestává být na obtíž. Pro úplnou bagatelizaci nejcitelnější nevýhody XML je namístě dodat, že již byla vytvořena binární forma XML.

Slabé stránky

Velký zápis komunikace. Složitost. Pomalé zpracování jednotlivými systémy (složité na parsovaní a validaci).

Ukázka

Zde je příklad, jak může vypadat zpráva od klienta, který se ptá na informace o produktu ze skladu pomocí webové služby. Klient se dožaduje informací o produktu označeném ID 827635:

 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetails xmlns="http://warehouse.example.com/ws">
       <productID>827635</productID>
     </getProductDetails>
   </soap:Body>
 </soap:Envelope>

Zde je odpověď webové služby pro klienta:

 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetailsResponse xmlns="http://warehouse.example.com/ws">
       <getProductDetailsResult>
         <productName>Čokoláda, sada 3 chutí</productName>
         <productID>827635</productID>
         <description>Čokoláda hořká, bílá a smetanová</description>
         <price>98,50</price>
         <inStock>ano</inStock>
       </getProductDetailsResult>
     </getProductDetailsResponse>
   </soap:Body>
 </soap:Envelope>

Odkazy

Externí odkazy

Média použitá na této stránce