XML-RPC - XML-RPC
Эта статья нужны дополнительные цитаты для проверка.Октябрь 2016) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
XML-RPC это удаленный вызов процедур (RPC) протокол который использует XML кодировать его звонки и HTTP как транспортный механизм.[1]
История
Протокол XML-RPC был создан в 1998 г. Дэйв Винер из Программное обеспечение UserLand и Microsoft,[2] Microsoft рассматривает протокол как неотъемлемую часть расширения своих усилий в области электронной коммерции между предприятиями.[3] По мере появления новых функций стандарт превратился в то, что сейчас МЫЛО.[4]
UserLand поддерживает XML-RPC начиная с версии 5.1 своей системы управления веб-контентом Frontier,[4] выпущен в июне 1998 г.[5]
Идея XML-RPC о стандарте для HTTP-запросов и ответов, доступного для чтения и записи и анализа сценариев, также была реализована в конкурирующих спецификациях, таких как Allaire's Обмен данными через Интернет (WDDX) и webMethod's Язык определения веб-интерфейса (WIDL).[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 с примерами значений, показанными ниже:
Имя | Пример тега | Описание |
---|---|---|
множество | <array> <data> <value><i4>1404</i4></value> <value><string>Что-то здесь</string></value> <value><i4>1</i4></value> </data></array> | Множество значений, без хранения ключей |
base64 | <base64>eW91IGNhbid0IHJlYWQgdGhpcyE =</base64> | Base64 -кодированные двоичные данные |
логический | <boolean>1</boolean> | Булево логическое значение (0 или 1) |
дата / время | <dateTime.iso8601>19980717T14: 08: 55</dateTime.iso8601> | Дата и время в ISO 8601 формат |
двойной | <double>-12.53</double> | Двойная точность число с плавающей запятой |
целое число | <int>42</int> или же <i4>42</i4> | Целое число, целое число |
нить | <string>Привет, мир!</string> или же Привет, мир! | Строка символов. Должен следовать Кодирование XML. |
структура | <struct> <member> <name>фу</name> <value><i4>1</i4></value> </member> <member> <name>бар</name> <value><i4>2</i4></value> </member></struct> | Ассоциативный массив |
ноль | <nil/> | Дискриминированное нулевое значение; XML-RPC расширение |
Примеры
Пример типичного запроса 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]
Смотрите также
- Ajax (программирование)
- Компонентные технологии
- Сравнение форматов сериализации данных
- OPML
- JSON-RPC
- веб-сервис
- gRPC
Рекомендации
- ^ Саймон Сен-Лоран, Джо Джонстон, Эдд Дамбилл. (Июнь 2001 г.) Программирование веб-сервисов с помощью XML-RPC. О'Рейли. Первое издание.
- ^ Коробка, Дон (1 апреля 2001 г.). «Краткая история SOAP». О'Рейли. Получено 27 октября 2010.
- ^ Рупли, Себастьян (30 июня 1999 г.). "Следующий шаг XML". Журнал ПК. Архивировано из оригинал 4 марта 2000 г.. Получено 17 ноября 2015.
- ^ а б Уолш, Джефф (10 июля 1999 г.). "Microsoft продвигает протокол". Инфомир. Архивировано из оригинал 14 сентября 1999 г.. Получено 17 ноября 2015.
- ^ Уолш, Джефф (29 июня 1998 г.). «UserLand выпускает Frontier 5.1, выпускает бесплатную модель». InfoWorld. Архивировано из оригинал 15 сентября 1999 г.. Получено 17 ноября 2015.
- ^ Уделл, Джон (7 июня 1999 г.). «Изучение XML-RPC: DCOM? CORBA? RMI? Почему не только XML-RPC?». Байт. Архивировано из оригинал 4 марта 2000 г.. Получено 17 ноября 2015.
- ^ Уолш, Джефф (25 мая 1998 г.). "W3C отдает должное WebBroker DataChannel". Инфомир. 20 (21). Архивировано из оригинал 10 сентября 1999 г.. Получено 17 ноября 2015.
- ^ Визард, Майкл; Уолш, Джефф (29 июня 1998 г.). «Дэйв Пул из DataChannel рассказывает о формировании роли XML в соответствии с различными потребностями». Инфомир. Архивировано из оригинал 16 сентября 1999 г.. Получено 8 декабря 2015.
- ^ Меррик; и другие. (11 апреля 2006 г.). «Патент США 7,028,312». Получено 18 сентября 2008.
- ^ «В чем преимущество XML-RPC перед обычным XML?». Переполнение стека. 9 сентября 2009 г.. Получено 7 апреля 2011.
- ^ «Открытый опрос достоинств XmlRpc по сравнению с альтернативами». www.intertwingly.net. 22 ноября 2006 г.. Получено 7 апреля 2011.
- ^ Джон Канади (14 января 2010 г.). «Если у вас есть REST, почему XML-RPC?». joncanady.com. Архивировано из оригинал 11 мая 2013 г.. Получено 7 апреля 2011.