XML-RPC (fra engelsk e X tensible M arkup L anguage Remote Procedure Call - XML-remote procedure call) er en remote procedure call standard/ protokol , der bruger XML til at kode sine meddelelser og HTTP som en transportmekanisme [1] . Det er stamfader til SOAP og er usædvanligt let at bruge. XML-RPC definerer ligesom enhver anden Remote Procedure Call-grænseflade (RPC) et sæt standarddatatyper og -kommandoer, som en programmør kan bruge til at få adgang til funktionaliteten af et andet program placeret på en anden computer på netværket .
XML-RPC-protokollen blev oprindeligt udviklet af Dave Winer fra UserLand Software i samarbejde med Microsoft i 1998 . Microsoft fandt dog hurtigt, at denne protokol var for enkel og begyndte at udvide dens funktionalitet. Efter flere cyklusser med udvidelse af funktionalitet dukkede systemet nu kendt som SOAP op. Senere begyndte Microsoft i vid udstrækning at annoncere og implementere SOAP, og den originale XML-RPC blev afvist. Men på trods af dens afvisning af Microsoft, fascinerede XML-RPC-standarden mange programmører med sin ekstraordinære enkelhed og eksisterer på grund af dette den dag i dag og vinder endda gradvist popularitet.
Indtast navn | Tag eksempel | Type beskrivelse |
---|---|---|
array | <array> <data> <value><i4> 1404 </i4></value> <value><string> Alt her </string></value> <value><i4> 1 </i4></value> </data> </array> | Array af værdier, ingen nøgler |
base64 | <base64> eW91IGNhbid0IHJlYWQgdGhpcyE= </base64> | Base64 - kodede binære data |
boolesk | <boolean> 1 </boolean> | Boolesk værdi (0 eller 1) |
dato tid | <dateTime.iso8601> 19980717T14:08:55 </dateTime.iso8601> | dato og tid |
dobbelt | <double> -12,53 </double> | Dobbelt præcisionsbrøkværdi |
heltal | <i4> 42 </i4> | Heltal |
snor | <string> Hej verden! </string> | Tegnstreng (i samme kodning som hele XML- dokumentet) |
struktur | <struct> <medlem> <navn> Noget </name> <value><i4> 1 </i4></value> </member> <medlem> <navn> Noget andet </name> < value><i4 > 2 </i4></value> </member> </struct> | Matrix af værdier med nøgler |
nul | <nul/> | Null (tom) værdi er en XML-RPC- udvidelse |
Et typisk eksempel på en XML-RPC-anmodning:
<?xml version="1.0"?> <methodCall> <methodName> examples.getStateName </methodName> <params> <param> <value><i4> 41 </i4></value> </param> </ params> </methodCall>Et typisk eksempel på et svar på en XML-RPC-anmodning:
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string> South Dakota </string></value> </param> </params> </methodResponse>Et typisk eksempel på en fejl på en XML-RPC-anmodning:
<?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name> faultCode </name> <value><int> 4 </int></value> </ medlem> <medlem> <navn> faultString </name> <value><string> For mange parametre. </string></value> </member> </struct> </value> </fault> </methodResponse>I dette tilfælde kan tags med en datatype udelades, når de transmitteres fra klienten og slet ikke specificeres.
Nylige kritikere (fra 2010 og frem) af XML-RPC hævder, at RPC-kald kan foretages med almindelig XML, og at XML-RPC ikke tilføjer nogen værdi over XML. Både XML-RPC og XML kræver en datamodel på applikationsniveau, såsom hvilke feltnavne der er defineret i XML-skemaet, eller parameternavne i XML-RPC. Ydermere bruger XML-RPC omkring 4 gange så mange bytes som almindelig XML til at kode de samme objekter, hvilket i sig selv er omfattende sammenlignet med JSON .