stringtranslate.com

XML-RPC

XML-RPC — это протокол удаленного вызова процедур (RPC) , который использует XML для кодирования своих вызовов и HTTP в качестве транспортного механизма. [1]

История

Протокол XML-RPC был создан в 1998 году Дэйвом Винером из UserLand Software и Microsoft , [2] причем Microsoft рассматривала протокол как неотъемлемую часть масштабирования своих усилий в области электронной коммерции между предприятиями. [3] По мере внедрения новых функций стандарт эволюционировал в то, что сейчас называется SOAP . [4]

UserLand поддерживал XML-RPC, начиная с версии 5.1 своей системы управления веб-контентом Frontier [4] , выпущенной в июне 1998 года. [5]

Идея XML-RPC о человекочитаемом и записываемом стандарте, пригодном для анализа скриптами для HTTP-запросов и ответов, также была реализована в конкурирующих спецификациях, таких как Web Distributed Data Exchange (WDDX) компании Allaire и Web Interface Definition Language (WIDL) компании webMethod. [6] Предшествующий уровень техники: обёртывание объектов COM , CORBA и Java RMI в синтаксис XML и их передача через HTTP также существовали в технологии WebBroker компании DataChannel. [7] [8]

Универсальное использование XML для удаленного вызова процедур (RPC) было запатентовано Филиппом Мерриком, Стюартом Алленом и Джозефом Лаппом в апреле 2006 года, заявив о преимуществах предварительной заявки, поданной в марте 1998 года. Патент был назначен webMethods , расположенному в Фэрфаксе, штат Вирджиния . Срок действия патента истек 23 марта 2019 года. [9]

Использование

В XML-RPC клиент выполняет RPC, отправляя HTTP-запрос на сервер, реализующий XML-RPC, и получает HTTP-ответ. Вызов может иметь несколько параметров и один результат. Протокол определяет несколько типов данных для параметров и результата. Некоторые из этих типов данных являются сложными, т. е. вложенными. Например, у вас может быть параметр, представляющий собой массив из пяти целых чисел.

Структура параметров/результатов и набор типов данных должны соответствовать используемым в распространенных языках программирования.

Идентификация клиентов для целей авторизации может быть достигнута с помощью популярных методов безопасности HTTP. Базовая аутентификация доступа может использоваться для идентификации и аутентификации.

По сравнению с протоколами RESTful, где передаются представления ресурсов (документы), XML-RPC предназначен для вызова методов . Практическое отличие заключается лишь в том, что XML-RPC гораздо более структурирован, что означает, что общий библиотечный код может использоваться для реализации клиентов и серверов, и требуется меньше работы по проектированию и документированию для конкретного прикладного протокола. [ необходима цитата ] Одно из существенных технических различий между типичными протоколами RESTful и XML-RPC заключается в том, что многие протоколы RESTful используют HTTP URI для информации о параметрах, тогда как в XML-RPC URI просто идентифицирует сервер.

JSON-RPC похож на XML-RPC.

Типы данных

Распространенные типы данных преобразуются в их эквиваленты XML с примерами значений, показанными ниже:

Примеры

Пример типичного запроса XML-RPC:

<?xml version="1.0"?> <methodCall> <methodName> examples.getStateName </methodName> <params> <param> <value><i4> 40 </i4></value> </param> </params> </methodCall>      

Пример типичного ответа XML-RPC:

<?xml version="1.0"?> <methodResponse> <params> <param> <value><string> Южная Дакота </string></value> </param> </params> </methodResponse>      

Типичная ошибка XML-RPC:

<?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name> faultCode </name> <value><int> 4 </int></value> </member> <member> <name> faultString </name> <value><string> Слишком много параметров. </string></value> </member> </struct> </value> </fault> </methodResponse>                

Критика

Недавние критики (с 2010 года и далее) XML-RPC утверждают, что вызовы RPC можно делать с помощью простого XML, и что XML-RPC не добавляет никакой ценности по сравнению с XML. Как XML-RPC, так и XML требуют модели данных на уровне приложения, например, какие имена полей определены в схеме XML или имена параметров в XML-RPC. Кроме того, XML-RPC использует примерно в 4 раза больше байтов по сравнению с простым XML для кодирования тех же объектов, что само по себе многословно по сравнению с JSON . [10] [11] [12]

Смотрите также

Ссылки

  1. ^ Саймон Сент-Лоран, Джо Джонстон, Эдд Дамбилл. (Июнь 2001 г.) Программирование веб-служб с использованием XML-RPC. O'Reilly. Первое издание.
  2. Бокс, Дон (1 апреля 2001 г.). «Краткая история SOAP». O'Reilly . Получено 27 октября 2010 г.
  3. Рапли, Себастьян (30 июня 1999 г.). «Следующий шаг XML». PC Magazine . Архивировано из оригинала 4 марта 2000 г. Получено 17 ноября 2015 г.
  4. ^ ab Walsh, Jeff (10 июля 1999 г.). "Microsoft возглавляет продвижение протокола". Infoworld . Архивировано из оригинала 14 сентября 1999 г. . Получено 17 ноября 2015 г. .
  5. ^ Уолш, Джефф (29 июня 1998 г.). «UserLand выпускает Frontier 5.1, отказывается от модели бесплатного ПО». InfoWorld . Архивировано из оригинала 15 сентября 1999 г. . Получено 17 ноября 2015 г. .
  6. ^ Уделл, Джон (7 июня 1999 г.). «Изучение XML-RPC: DCOM? CORBA? RMI? Почему не просто XML-RPC?». Byte . Архивировано из оригинала 4 марта 2000 г. Получено 17 ноября 2015 г.
  7. Уолш, Джефф (25 мая 1998 г.). «W3C одобряет WebBroker от DataChannel». Infoworld . Том 20, № 21. Архивировано из оригинала 10 сентября 1999 г. Получено 17 ноября 2015 г.
  8. ^ Визард, Майкл; Уолш, Джефф (29 июня 1998 г.). «Дэйв Пул из DataChannel рассказывает о формировании роли XML для удовлетворения различных потребностей». Infoworld . Архивировано из оригинала 16 сентября 1999 г. . Получено 8 декабря 2015 г. .
  9. ^ Merrick; et al. (11 апреля 2006 г.). "Патент США 7,028,312". Архивировано из оригинала 3 декабря 2011 г. Получено 18 сентября 2008 г.
  10. ^ «В чем преимущество XML-RPC по сравнению с обычным XML?». Stack Overflow . 9 сентября 2009 г. Получено 7 апреля 2011 г.
  11. ^ "Открытый опрос о достоинствах XmlRpc по сравнению с альтернативами". intertwingly.net. 22 ноября 2006 г. Получено 7 апреля 2011 г.
  12. ^ Джон Канади (14 января 2010 г.). «Если у вас есть REST, почему XML-RPC?». joncanady.com. Архивировано из оригинала 11 мая 2013 г. Получено 7 апреля 2011 г.

Внешние ссылки