SOAP

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
SOAP.svg

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[editovat | editovat zdroj]

HTTP i SMTP se dají použít jako aplikační vrstva pro protokol SOAP. Ale HTTP dosáhl daleko většího použití. Je to především proto, že HTTP je prakticky základ pro dnešní Internetovou infrastrukturu. Díky tomu může SOAP jednoduše procházet přes firewall. To je hlavní výhoda oproti jiným distribuovaným protokolům, jako je například DCOM, které jsou většinou na firewallu zakázány.

XML formát byl zvolen jako standard pro přenos SOAP zpráv pro jeho rozšířenost a dostupnost vývojových nástrojů nabízených jako opensource nebo freeware a tedy volně k používání.

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 stojí to hodně procesorového času a operační paměti. Oproti tomu CORBA, GIOP nebo DCOM má zápis zpráv pro komunikaci daleko kratší a binární, tedy pro člověka nečitelný. Na druhou stranu vývoj počítačů jde rychle dopředu a přestává to být na obtíž. Byla již vytvořena i binární forma XML.

Slabé stránky[editovat | editovat zdroj]

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

Ukázka[editovat | editovat zdroj]

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>
         <popis>Čokoláda hořka, bílá a smetanová</popis>
         <cena>98,50</cena>
         <naSkladu>ano</naSkladu>
       </getProductDetailsResult>
     </getProductDetailsResponse>
   </soap:Body>
 </soap:Envelope>

Zdroje[editovat | editovat zdroj]