XML-RPC

XML-RPC ( Extensible Markup Language Remote Procedure Call ) je definice volání metody nebo funkce distribuovanými systémy .

Všeobecné

Během specifikace byl kladen důraz na skutečnost, že XML-RPC lze implementovat bez velkého úsilí v různých programovacích jazycích a na různých systémových platformách. I z tohoto důvodu byly pro implementaci kombinovány dva standardy: K přenosu dat byl použit protokol Hypertext Transfer Protocol (HTTP), zatímco přenesená data jsou reprezentována v XML ( Extensible Markup Language ).

Volba těchto standardů také představuje zásadní rozdíl vůči starším mechanismům RPC, jako jsou RPC , Corba nebo DCOM , ve kterých jsou data většinou přenášena v (částečně na systému závislém: DCOM) binárním vyjádření pomocí speciálních přenosových protokolů.

Historicky je XML-RPC předchůdcem SOAP , ale na rozdíl od toho je mnohem štíhlejší a srozumitelnější.

Existuje mnoho implementací pro mnoho dnes běžně používaných programovacích jazyků, které přebírají základní funkce volání metod a zpracování metod. Mezi základní funkce v těchto knihovnách patří:

  • Zastoupení datových typů ,
  • Generování a analýza paketů požadavků a odpovědí,
  • Vysílání a příjem téhož a
  • často poskytnutí kostry a pahýlu, aby se programový kód jednoduše „naplnil životem“.

V XML-RPC jsou definovány následující datové typy:

Zadejte jména v XML-RPC popis
int, i4 Celé číslo (datový typ)
dvojnásobek Číslo s plovoucí desetinnou čárkou
booleovský Booleovská proměnná
tětiva Tětiva
dateTime.iso8601 Datum a čas podobný formátu ISO
base64 Base64 kódovaná binární data

Některé z těchto jednoduchých datových typů lze kombinovat pomocí „struct“ a „array“. „Struktura“ představuje kolekci párů klíč – hodnota; ke všem obsaženým hodnotám lze tedy přistupovat pomocí jedinečného klíče. „Pole“ na druhé straně představuje seznam ; každá obsažená hodnota je jasně popsána svou polohou. Kromě jednoduchých datových typů mohou „struktury“ a „pole“, dále „struktury“ a „pole“, obsahovat hodnoty; lze reprezentovat jakékoli složité datové struktury.

V Javě je datovým typem odpovídajícím „struktuře“ takzvaná mapa (java.util.Map). Většina implementací používá pro zobrazení třídu HashTable, která implementuje rozhraní Map, ale v Javě existuje již dlouhou dobu. Datovým typem odpovídajícím „poli“ je takzvaný List (java.util.List) nebo pole objektů v Javě.

Rozšíření standardu

Existují různá rozšíření normy, aby se odstranily údajné mezery v normě. Většinou jsou však tato rozšíření založena na nedorozumění toho, co je XML-RPC, a ohrožují interoperabilitu různých systémů. Většina implementací proto také nabízí přepnutí do režimu kompatibility, ve kterém je podporován pouze standard.

Nulový datový typ

Reprezentace takzvaných nulových hodnot (také známých jako NIL, NULL nebo NUL) není u XML-RPC možná. Metody proto musí vždy vrátit konkrétní hodnotu, ve výjimečných případech to může být problém. K vyřešení tohoto problému existují různá rozšíření standardu XML-RPC, ale ne všechny servery a klienti tato rozšíření podporují.

Příklady

poptávka

 <?xml version="1.0"?>
 <methodCall>
   <methodName>warenkorb.addPosition</methodName>
   <params>
     <param>
       <value><string>Monitor</string></value>
     </param>
     <param>
       <value><int>10</int></value>
     </param>
   </params>
 </methodCall>

Odpovědět

 <?xml version="1.0"?>
 <methodResponse>
   <params>
     <param>
       <value><string>OK</string></value>
     </param>
   </params>
 </methodResponse>

Příklad kódu: Linux Documentation Project

Viz také

webové odkazy

Individuální důkazy

  1. XML-RPC používá datum ve formátu RRRRmmdd'T'HH: MM: SS a bez zadání časového pásma.
  2. například: ontosys.com ( Memento z 9. března 2007 v internetovém archivu )
  3. Eric Kidd: XML-RPC HOWTO ( anglicky ) tldp.org. 12. dubna 2001. Citováno 14. září 2019.