Az XML-RPC (az angol nyelvből e X tensible M arkup L Anguage Remote Procedure Call - XML Remote Procedure Call ) egy távoli eljáráshívás szabvány/ protokoll , amely XML -t használ üzenetei kódolására, a HTTP -t pedig szállítási mechanizmusként [1] . Ez a SOAP elődje, és rendkívül könnyen használható. Az XML-RPC, mint bármely más távoli eljáráshívás (RPC) interfész, szabványos adattípusokat és parancsokat határoz meg, amelyek segítségével a programozó hozzáférhet a hálózat másik számítógépén található másik program funkcióihoz .
Az XML-RPC protokollt eredetileg Dave Winer, a UserLand Software fejlesztette ki a Microsofttal együttműködve 1998 - ban . A Microsoft azonban hamarosan túlságosan leegyszerűsítőnek találta ezt a protokollt, és elkezdte bővíteni funkcionalitását. A funkcionalitás bővítésének több ciklusa után megjelent a SOAP néven ismert rendszer. Később a Microsoft elkezdte széles körben hirdetni és megvalósítani a SOAP-ot, és az eredeti XML-RPC-t elutasították. De annak ellenére, hogy a Microsoft elutasította, az XML-RPC szabvány sok programozót lenyűgözött rendkívüli egyszerűségével, és ennek köszönhetően a mai napig létezik, sőt fokozatosan egyre népszerűbb.
Írja be a nevet | Címke példa | Típus Leírás |
---|---|---|
sor | <tömb> <adat> <value><i4> 1404 </i4></value> <value><string> Bármi itt található </string></value> <value><i4> 1 </i4></value> </data> </array> | Értékek tömbje, kulcsok nélkül |
alap64 | <base64> eW91IGNhbid0IHJlYWQgdGhpcyE= </base64> | Base64 kódolású bináris adatok |
logikai érték | <boolean> 1 </boolean> | Logikai érték (0 vagy 1) |
dátum idő | <dateTime.iso8601> 19980717T14:08:55 </dateTime.iso8601> | dátum és idő |
kettős | <double> -12,53 </double> | Dupla pontosságú törtérték |
egész szám | <i4> 42 </i4> | Egész szám |
húr | <string> Hello World! </string> | Karakterlánc (ugyanabban a kódolásban, mint a teljes XML - dokumentum) |
struct | <struct> <member> <name> Valami </name> <value><i4> 1 </i4></value> </member> <member> <name> Valami más </name> < value><i4 > 2 </i4></value> </member> </struct> | Értékek tömbje, kulcsokkal |
nulla | <nil/> | A nulla (üres) érték egy XML-RPC kiterjesztés |
Tipikus XML-RPC kérés példa:
<?xml version="1.0"?> <methodCall> <methodName> examples.getStateName </methodName> <params> <param> <value><i4> 41 </i4></value> </param> </ params> </methodCall>Tipikus példa egy XML-RPC kérésre adott válaszra:
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string> Dél-Dakota </string></value> </param> </params> </methodResponse>Tipikus példa egy XML-RPC kérés hibájára:
<?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name> faultCode </name> <value><int> 4 </int></value> </ Member > <member> <name> faultString </name> <value><string> Túl sok paraméter. </string></value> </member> </struct> </value> </fault> </methodResponse>Ebben az esetben az adattípusú címkék elhagyhatók, amikor a klienstől továbbítják, és egyáltalán nem adják meg.
Az XML-RPC legújabb kritikusai (2010-től) azzal érvelnek, hogy az RPC-hívások egyszerű XML-lel is indíthatók, és az XML-RPC nem ad több értéket az XML-hez képest. Mind az XML-RPC, mind az XML alkalmazásszintű adatmodellt igényel, például, hogy milyen mezőnevek vannak meghatározva az XML-sémában, vagy paraméternevek az XML-RPC-ben. Ezenkívül az XML-RPC körülbelül 4-szer annyi bájtot használ, mint a normál XML ugyanazon objektumok kódolásához, ami a JSON -hoz képest maga is bőbeszédű .