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
- Oficiální webová stránka (v angličtině)
- Fórum XML-RPC (anglicky)
- Pokyny (anglicky)
- Technologické zprávy (anglicky)
- XML-RPC Introspection (anglicky)
- neoficiální XML-RPC Errata (anglicky)
Individuální důkazy
- ↑ XML-RPC používá datum ve formátu RRRRmmdd'T'HH: MM: SS a bez zadání časového pásma.
- ↑ například: ontosys.com ( Memento z 9. března 2007 v internetovém archivu )
- ↑ Eric Kidd: XML-RPC HOWTO ( anglicky ) tldp.org. 12. dubna 2001. Citováno 14. září 2019.