XML-RPC - XML-RPC
XML-RPC to protokół zdalnego wywoływania procedur (RPC) , który wykorzystuje XML do kodowania wywołań i HTTP jako mechanizm transportowy.
Historia
Protokół XML-RPC został stworzony w 1998 roku przez Dave'a Winera z UserLand Software i Microsoft , przy czym Microsoft postrzega go jako zasadniczy element zwiększania wysiłków w handlu elektronicznym między przedsiębiorstwami. Wraz z wprowadzeniem nowej funkcjonalności standard ewoluował do tego, co jest teraz SOAP .
UserLand obsługiwał XML-RPC od wersji 5.1 swojego systemu zarządzania treścią WWW Frontier, wydanego w czerwcu 1998 r.
Pomysł XML-RPC na czytelny i zapisywalny przez człowieka, analizowalny skrypt dla żądań i odpowiedzi opartych na HTTP został również wdrożony w konkurencyjnych specyfikacjach, takich jak Allaire's Web Distributed Data Exchange (WDDX) i WebMethod's Web Interface Definition Language (WIDL) ). Wcześniejsze zawijanie obiektów COM , CORBA i Java RMI w składnię XML i transportowanie ich przez HTTP również istniało w technologii WebBroker firmy DataChannel.
Ogólne użycie XML do zdalnego wywoływania procedur (RPC) zostało opatentowane przez Phillipa Merricka, Stewarta Allena i Josepha Lappa w kwietniu 2006 r., W związku z czym domagali się korzyści z tymczasowego wniosku złożonego w marcu 1998 r. Patent został przypisany firmie webMethods , zlokalizowanej w Fairfax, VA . Patent wygasł 23 marca 2019 r
Stosowanie
W XML-RPC klient wykonuje RPC, wysyłając żądanie HTTP do serwera, który implementuje XML-RPC i otrzymuje odpowiedź HTTP. Wywołanie może mieć wiele parametrów i jeden wynik. Protokół definiuje kilka typów danych dla parametrów i wyniku. Niektóre z tych typów danych są złożone, tj. Zagnieżdżone. Na przykład możesz mieć parametr będący tablicą pięciu liczb całkowitych.
Parametry / struktura wyników oraz zestaw typów danych mają odzwierciedlać te używane w popularnych językach programowania.
Identyfikację klientów na potrzeby autoryzacji można osiągnąć za pomocą popularnych metod zabezpieczeń HTTP. Do identyfikacji i uwierzytelniania można użyć podstawowego uwierzytelniania dostępu .
W porównaniu z protokołami RESTful, w których są przesyłane reprezentacje zasobów (dokumenty), XML-RPC jest przeznaczony do wywoływania metod . Praktyczna różnica polega na tym, że XML-RPC jest znacznie bardziej ustrukturyzowany, co oznacza, że wspólny kod biblioteki może być używany do implementacji klientów i serwerów, a projekt i dokumentacja wymagają mniej pracy związanej z określonym protokołem aplikacji. Istotną różnicą techniczną między typowymi protokołami RESTful a XML-RPC jest to, że protokół RESTful używa identyfikatora HTTP URI do informacji o parametrach, podczas gdy w przypadku XML-RPC identyfikator URI tylko identyfikuje serwer.
JSON-RPC jest podobny do XML-RPC.
Typy danych
Typowe typy danych są konwertowane na ich odpowiedniki XML z przykładowymi wartościami pokazanymi poniżej:
| Nazwa | Przykład tagu | Opis |
|---|---|---|
| szyk |
<array>
<data>
<value><i4>1404</i4></value>
<value><string>Something here</string></value>
<value><i4>1</i4></value>
</data>
</array>
|
Tablica wartości, bez kluczy |
| base64 |
<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>
|
Dane binarne zakodowane w Base64 |
| boolean |
<boolean>1</boolean>
|
Wartość logiczna Boolean (0 lub 1) |
| data / godzina |
<dateTime.iso8601>19980717T14:08:55Z</dateTime.iso8601>
|
Data i czas w ISO 8601 formacie |
| podwójnie |
<double>-12.53</double>
|
Liczba zmiennoprzecinkowa podwójnej precyzji |
| liczba całkowita |
<int>42</int>
lub <i4>42</i4>
|
Liczba całkowita , liczba całkowita |
| strunowy |
<string>Hello world!</string>
lub Hello world!
|
Ciąg znaków. Musi być zgodne z kodowaniem XML . |
| struct |
<struct>
<member>
<name>foo</name>
<value><i4>1</i4></value>
</member>
<member>
<name>bar</name>
<value><i4>2</i4></value>
</member>
</struct>
|
Tablica asocjacyjna |
| zero |
<nil/>
|
Rozróżniana wartość zerowa ; XML-RPC rozszerzenie |
Przykłady
Przykład typowego żądania XML-RPC:
<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>40</i4></value>
</param>
</params>
</methodCall>
Przykład typowej odpowiedzi XML-RPC to:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
Typowy błąd XML-RPC to:
<?xml version="1.0"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>4</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Too many parameters.</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
Krytyka
Niedawni krytycy (od 2010 r. I później) XML-RPC twierdzą, że wywołania RPC można wykonywać za pomocą zwykłego XML, a XML-RPC nie dodaje żadnej wartości do XML. Zarówno XML-RPC, jak i XML wymagają modelu danych na poziomie aplikacji, na przykład nazw pól zdefiniowanych w schemacie XML lub nazw parametrów w języku XML-RPC. Co więcej, XML-RPC wykorzystuje około 4 razy więcej bajtów w porównaniu do zwykłego XML do kodowania tych samych obiektów, co samo w sobie jest gadatliwe w porównaniu z JSON .
Zobacz też
- Ajax (programowanie)
- Technologie komponentów
- Porównanie formatów serializacji danych
- OPML
- JSON-RPC
- Serwis internetowy
- gRPC