Эта статья требует дополнительных ссылок для проверки . ( октябрь 2016 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
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 и язык определения веб-интерфейса webMethod (WIDL). ). [6] В предшествующем уровне техники упаковка COM , CORBA и Java RMI объекты в синтаксисе XML и транспортировать их через HTTP также существовали в технологии WebBroker DataChannel в. [7] [8]
Общее использование XML для удаленного вызова процедур (RPC) было запатентовано Филипом Мерриком, Стюартом Алленом и Джозефом Лаппом в апреле 2006 года, заявив, что они выиграли предварительную заявку, поданную в марте 1998 года. Патент был передан компании webMethods , расположенной в Фэрфаксе, США. VA . Срок действия патента истек 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> </ значение> </data> </array> | Массив значений, без ключей |
base64 | <base64> eW91IGNhbid0IHJlYWQgdGhpcyE = </base64> | Двоичные данные в кодировке Base64 |
логический | <boolean> 1 </boolean> | Логическое значение (0 или 1) |
дата / время | <dateTime.iso8601> 19980717T14: 08: 55Z </dateTime.iso8601> | Дата и время в формате ISO 8601 |
двойной | <double> -12,53 </double> | Число двойной точности с плавающей запятой |
целое число | <int> 42 </int> или же <i4> 42 </i4> | Целое число, целое число |
нить | <string> Привет, мир! </string> или же Привет, мир! | Строка символов. Должен соответствовать кодировке XML . |
структура | <struct> <member> <name> foo </name> <value> <i4> 1 </i4> </value> </member> <member> <name> bar </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. О'Рейли. Первое издание.
- ↑ Box, Don (1 апреля 2001 г.). «Краткая история SOAP» . О'Рейли . Проверено 27 октября 2010 года .
- ^ Rupley, Себастьян (30 июня 1999). «Следующий шаг XML» . Журнал ПК . Архивировано из оригинала на 4 марта 2000 года . Проверено 17 ноября 2015 года .
- ^ a b Уолш, Джефф (10 июля 1999 г.). «Microsoft - продвижение протокола» . Инфомир . Архивировано из оригинального 14 сентября 1999 года . Проверено 17 ноября 2015 года .
- ↑ Уолш, Джефф (29 июня 1998 г.). «UserLand выпускает Frontier 5.1, выпускает бесплатную модель» . InfoWorld . Архивировано из оригинального 15 сентября 1999 года . Проверено 17 ноября 2015 года .
- ^ Udell, Джон (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 года .
- ^ Джон Canady (14 января 2010). «Если у вас есть REST, почему XML-RPC?» . joncanady.com. Архивировано из оригинального 11 мая 2013 года . Проверено 7 апреля 2011 года .
Внешние ссылки [ править ]
- Официальный веб-сайт