XML-RPC

XML-RPC ( Extensible Markup Language Remote Procedure Call ) to definicja wywołań metod lub funkcji przez systemy rozproszone .

Generał

Podczas specyfikacji ważne było zapewnienie, że XML-RPC można zaimplementować bez większego wysiłku w różnych językach programowania i na różnych platformach systemowych. Z tego też powodu do implementacji połączono dwa standardy: do transportu danych wykorzystano protokół HTTP ( Hypertext Transfer Protocol ), podczas gdy przesyłane dane są reprezentowane w Extensible Markup Language (XML).

Wybór tych standardów stanowi również zasadniczą różnicę w stosunku do starszych mechanizmów RPC, takich jak RPC , Corba lub DCOM , w których dane są głównie przesyłane w (częściowo zależnej od systemu: DCOM) reprezentacji binarnej za pośrednictwem specjalnych protokołów transmisji.

Historycznie rzecz biorąc, XML-RPC jest poprzednikiem SOAP , ale w przeciwieństwie do niego jest znacznie prostszy i łatwiejszy do zrozumienia.

Istnieje wiele implementacji wielu powszechnie używanych języków programowania, które przejmują podstawową funkcjonalność wywołań metod i ich obsługi. Do podstawowych funkcjonalności tych bibliotek należą:

  • Reprezentacja typów danych ,
  • Generowanie i analiza pakietów zapytań i odpowiedzi,
  • Transmisja i odbiór tego samego i
  • często świadczenie szkieletu i odgałęzienie po prostu „Fill z życia” w kodzie programu.

W XML-RPC zdefiniowano następujące typy danych:

Wpisz nazwy w XML-RPC opis
int, i4 Integer (typ danych)
podwójnie Liczba zmiennoprzecinkowa
boolean Zmienna logiczna
strunowy Strunowy
dateTime.iso8601 Data i czas podobne do formatu ISO
base64 Dane binarne zakodowane algorytmem Base64

Kilka z tych prostych typów danych można łączyć za pomocą „struktury” i „tablicy”. „Struktura” reprezentuje zbiór par klucz-wartość; Dlatego też do każdej zawartej wartości można uzyskać dostęp za pomocą unikalnego klucza. Z drugiej strony „tablica” reprezentuje listę ; każda zawarta wartość jest jasno opisana przez jej położenie. Oprócz prostych typów danych „struct” i „array”, z kolei „struct” i „array” mogą zawierać wartości; można przedstawić dowolne złożone struktury danych.

W Javie typem danych odpowiadającym „strukturze” jest tak zwana mapa (java.util.Map). Większość implementacji używa do wyświetlania klasy HashTable, która implementuje interfejs Map, ale istnieje w Javie od dawna. Typ danych odpowiadający „tablicy” to tak zwana lista (java.util.List) lub tablica obiektów w Javie.

Rozszerzenia do standardu

Istnieją różne rozszerzenia standardu w celu wypełnienia rzekomych luk w standardzie. Jednak w większości przypadków rozszerzenia te opierają się na niezrozumieniu, czym jest XML-RPC i zagrażają interoperacyjności różnych systemów. Dlatego większość implementacji oferuje również przełącznik umożliwiający przejście do trybu zgodności, w którym obsługiwany jest tylko standard.

Null typ danych

Reprezentacja tak zwanych wartości zerowych (znanych również jako NIL, NULL lub NUL) nie jest możliwa w przypadku XML-RPC. Dlatego metody muszą zawsze zwracać konkretną wartość, w rzadkich przypadkach może to stanowić problem. Istnieją różne rozszerzenia standardu XML-RPC rozwiązujące ten problem, ale nie wszystkie serwery i klienci obsługują te rozszerzenia.

Przykłady

zapytanie ofertowe

 <?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>

odpowiedź

 <?xml version="1.0"?>
 <methodResponse>
   <params>
     <param>
       <value><string>OK</string></value>
     </param>
   </params>
 </methodResponse>

Przykład kodu: Linux Documentation Project

Zobacz też

linki internetowe

Indywidualne dowody

  1. XML-RPC używa daty w formacie RRRRmmdd'T'HH: MM: SS i bez określania strefy czasowej.
  2. na przykład: ontosys.com ( Memento z 9 marca 2007 w Internet Archive )
  3. Eric Kidd: XML-RPC HOWTO ( angielski ) tldp.org. 12 kwietnia 2001. Pobrano 14 września 2019.