XML-RPC ( englanniksi e X tensible M arkup L Anguage Remote Procedure Call - XML-remote procedure call) on etäproseduurikutsun standardi/ protokolla , joka käyttää XML :ää koodaamaan viestinsä ja HTTP :tä siirtomekanismina [1] . Se on SOAP :n edeltäjä ja poikkeuksellisen helppokäyttöinen. XML-RPC, kuten mikä tahansa muu RPC (Remote Procedure Call) -liitäntä, määrittää joukon vakiotietotyyppejä ja -komentoja, joita ohjelmoija voi käyttää päästäkseen toisen verkon toisessa tietokoneessa sijaitsevan ohjelman toimintoihin .
XML-RPC-protokollan kehitti alun perin UserLand Softwaren Dave Winer yhteistyössä Microsoftin kanssa vuonna 1998 . Microsoft piti kuitenkin pian tätä protokollaa liian yksinkertaisena ja alkoi laajentaa sen toimintoja. Useiden toimintojen laajentamisen jaksojen jälkeen nyt SOAP-nimellä tunnettu järjestelmä ilmestyi. Myöhemmin Microsoft alkoi mainostaa ja toteuttaa SOAPia laajalti, ja alkuperäinen XML-RPC hylättiin. Mutta vaikka Microsoft hylkäsi sen, XML-RPC-standardi kiehtoi monia ohjelmoijia poikkeuksellisella yksinkertaisuudellaan, ja tämän vuoksi se on olemassa tähän päivään asti ja on jopa vähitellen saamassa suosiota.
Kirjoita nimi | Tag Esimerkki | Tyyppi Kuvaus |
---|---|---|
joukko | <taulukko> <data> <value><i4> 1404 </i4></value> <value><string> Kaikki tässä </string></value> <value><i4> 1 </i4></value> </data> </array> | Joukko arvoja, ei avaimia |
base64 | <base64> eW91IGNhbid0IHJlYWQgdGhpcyE= </base64> | Base64- koodattu binääridata |
boolean | <boolean> 1 </boolean> | Boolen arvo (0 tai 1) |
treffiaika | <dateTime.iso8601> 19980717T14:08:55 </dateTime.iso8601> | päivämäärä ja aika |
kaksinkertainen | <double> -12,53 </double> | Kaksinkertainen tarkkuus murtoluku |
kokonaisluku | <i4> 42 </i4> | Kokonaisluku |
merkkijono | <string> Hei maailma! </string> | Merkkijono (samassa koodauksessa kuin koko XML - dokumentti) |
struct | <struct> <member> <name> Jotain </name> <value><i4> 1 </i4></value> </member> <member> <name> Jotain muuta </name> < value><i4 > 2 </i4></value> </member> </struct> | Joukko arvoja avaimilla |
nolla | <nolla/> | Nolla (tyhjä) arvo on XML-RPC- laajennus |
Tyypillinen XML-RPC-pyyntöesimerkki:
<?xml version="1.0"?> <methodCall> <methodName> examples.getStateName </methodName> <params> <param> <value><i4> 41 </i4></value> </param> </ params> </methodCall>Tyypillinen esimerkki vastauksesta XML-RPC-pyyntöön:
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string> Etelä-Dakota </string></value> </param> </params> </methodResponse>Tyypillinen esimerkki virheestä XML-RPC-pyynnössä:
<?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name> faultCode </name> <value><int> 4 </int></value> </ Member> <jäsen> <nimi> faultString </name> <value><string> Liian monta parametria. </string></value> </member> </struct> </value> </fault> </methodResponse>Tässä tapauksessa tietotyypin tunnisteet voidaan jättää pois, kun ne lähetetään asiakkaalta, eikä niitä määritetä ollenkaan.
Viimeaikaiset XML-RPC:n kriitikot (vuodesta 2010 lähtien) väittävät, että RPC-kutsut voidaan tehdä pelkällä XML:llä ja että XML-RPC ei tuo mitään lisäarvoa XML:ään verrattuna. Sekä XML-RPC että XML edellyttävät sovellustason tietomallia, kuten mitä kenttien nimet on määritelty XML-skeemassa tai parametrien nimet XML-RPC:ssä. Lisäksi XML-RPC käyttää noin 4 kertaa enemmän tavua kuin tavallinen XML koodaamaan samoja objekteja, mikä on itsessään monisanaista JSONiin verrattuna .