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
- Oficjalna strona internetowa (angielski)
- Forum XML-RPC (w języku angielskim)
- Instrukcje (angielski)
- Raporty technologiczne (angielski)
- Introspekcja XML-RPC (angielski)
- nieoficjalny XML-RPC Errata (angielski)
Indywidualne dowody
- ↑ XML-RPC używa daty w formacie RRRRmmdd'T'HH: MM: SS i bez określania strefy czasowej.
- ↑ na przykład: ontosys.com ( Memento z 9 marca 2007 w Internet Archive )
- ↑ Eric Kidd: XML-RPC HOWTO ( angielski ) tldp.org. 12 kwietnia 2001. Pobrano 14 września 2019.