XML-RPC
XML-RPC (z angličtiny e X tensible M arkup L jazyk Remote Procedure Call - XML vzdálené volání procedur) je standard/ protokol vzdáleného volání procedur, který používá XML ke kódování svých zpráv a HTTP jako transportní mechanismus [1] . Je předchůdcem SOAP a je výjimečně snadno použitelný. XML-RPC, stejně jako jakékoli jiné rozhraní vzdáleného volání procedur (RPC), definuje sadu standardních datových typů a příkazů, které může programátor použít k přístupu k funkcím jiného programu umístěného na jiném počítači v síti .
Historie
Protokol XML-RPC původně vyvinul Dave Winer z UserLand Software ve spolupráci s Microsoftem v roce 1998 . Microsoft však brzy shledal tento protokol příliš zjednodušeným a začal rozšiřovat jeho funkčnost. Po několika cyklech rozšiřování funkčnosti se objevil systém nyní známý jako SOAP. Později Microsoft začal široce inzerovat a implementovat SOAP a původní XML-RPC bylo odmítnuto. Ale i přes jeho odmítnutí ze strany Microsoftu, standard XML-RPC fascinoval mnoho programátorů svou mimořádnou jednoduchostí a díky tomu existuje dodnes a dokonce si postupně získává na popularitě.
Datové typy
| Zadejte název | Příklad značky | Popis typu |
|---|---|---|
| pole |
<pole>
<data>
<value><i4> 1404 </i4></value>
<value><string> Cokoli zde </string></value>
<value><i4> 1 </i4></value>
</data>
</array>
|
Pole hodnot, žádné klíče |
| základ 64 | <base64> eW91IGNhbid0IHJlYWQgdGhpcyE= </base64>
|
Binární data zakódovaná v Base64 |
| booleovský | <boolean> 1 </boolean>
|
Booleovská hodnota (0 nebo 1) |
| čas schůzky | <dateTime.iso8601> 19980717T14:08:55 </dateTime.iso8601>
|
datum a čas |
| dvojnásobek | <double> -12,53 </double>
|
Zlomková hodnota s dvojnásobnou přesností |
| celé číslo | <i4> 42 </i4>
|
Celé číslo |
| tětiva | <string> Ahoj světe! </string>
|
Řetězec znaků (ve stejném kódování jako celý dokument XML ) |
| strukturovat |
<struct>
<member>
<name> Něco </name>
<value><i4> 1 </i4></value>
</member>
<member>
<name> Něco jiného </name>
< value><i4 > 2 </i4></value>
</member>
</struct>
|
Pole hodnot s klíči |
| nula | <nula/>
|
Hodnota Null (prázdná) je rozšíření XML-RPC |
Příklady
Typický příklad požadavku XML-RPC:
<?xml version="1.0"?>
<methodCall>
<methodName> example.getStateName </methodName>
<params>
<param>
<value><i4> 41 </i4></value>
</param>
</ params>
</methodCall>
Typický příklad odpovědi na požadavek XML-RPC:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string> Jižní Dakota </string></value>
</param>
</params>
</methodResponse>
Typický příklad chyby v požadavku XML-RPC:
<?xml version="1.0"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name> faultCode </name>
<value><int> 4 </int></value>
</ member>
<member>
<name> faultString </name>
<value><string> Příliš mnoho parametrů. </string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
V tomto případě lze tagy s datovým typem při přenosu z klienta vynechat a vůbec je nespecifikovat.
Kritika
Nedávní kritici (od roku 2010) XML-RPC tvrdí, že volání RPC lze provádět pomocí prostého XML a že XML-RPC nepřidává žádnou hodnotu oproti XML. XML-RPC i XML vyžadují datový model na úrovni aplikace, jako jsou názvy polí definované ve schématu XML nebo názvy parametrů v XML-RPC. Navíc XML-RPC používá ke kódování stejných objektů asi 4krát více bajtů než běžný XML, což je samo o sobě ve srovnání s JSON podrobné .
Viz také
- XML
- MÝDLO
- Webová služba (stejně jako WSDL a UDDI )
- RSS
- OPML
- BPEL
- MetaWeblog
Odkazy
- ↑ Simon St. Laurent, Joe Johnston, Edd Dumbill. (červen 2001) Programování webových služeb pomocí XML-RPC. O'Reilly. první vydání.
- Oficiální stránky XML-RPC
- XML-RPC for PHP (PHPXMLRPC) - knihovna pro urychlení vývoje webových služeb (napsaná samotným tvůrcem XML-RPC protokolu)
- Psaní vaší webové služby v PHP a XML-RPC Archivováno 15. září 2008 na Wayback Machine
- .Net implementace XML-RPC
- Fórum XML-RPC
- Výukové programy XML-RPC
- Technologické zprávy o XML-RPC
- Jabber-RPC - XML-RPC nad protokolem XMPP
- Apache, XML-RPC a zabezpečení
- Specifikace XML-RPC
- Specifikace XML-RPC - ruský překlad