XML-RPC
Эта статья нуждается в дополнительных цитатах для проверки . ( октябрь 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-запросов и ответов, также была реализована в конкурирующих спецификациях, таких как Allaire's Web Distributed Data Exchange (WDDX) и WebMethod's Web Interface Definition Language (WIDL). ). [6] упаковка объектов COM , CORBA и Java RMI в синтаксис XML и их транспортировка через HTTP. Ранее в технологии DataChannel WebBroker также существовала [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>Something here</string></value>
<value><i4>1</i4></value>
</data>
</array>
|
Массив значений, без хранения ключей |
база64 |
<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>Hello world!</string>
или Hello world!
|
Строка символов. Должен следовать кодировке 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>South Dakota</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>Too many parameters.</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]
См. также
[ редактировать ]- Аякс (программирование)
- Компонентные технологии
- Сравнение форматов сериализации данных
- ОПМЛ
- JSON-RPC
- Веб-сервис
- gRPC
Ссылки
[ редактировать ]- ^ Саймон Сен-Лоран, Джо Джонстон, Эдд Дамбилл. (июнь 2001 г.) Программирование веб-служб с помощью XML-RPC. О'Рейли. Первое издание.
- ^ Бокс, Дон (1 апреля 2001 г.). «Краткая история SOAP» . О'Рейли . Проверено 27 октября 2010 г.
- ^ Рупли, Себастьян (30 июня 1999 г.). «Следующий шаг XML» . Журнал ПК . Архивировано из оригинала 4 марта 2000 года . Проверено 17 ноября 2015 г.
- ^ Jump up to: а б Уолш, Джефф (10 июля 1999 г.). «Майкрософт возглавляет продвижение протокола» . Инфомир . Архивировано из оригинала 14 сентября 1999 года . Проверено 17 ноября 2015 г.
- ^ Уолш, Джефф (29 июня 1998 г.). «UserLand выпускает Frontier 5.1, отказываясь от бесплатной модели» . Инфомир . Архивировано из оригинала 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 г.). «Патент США 7028312» . Архивировано из оригинала 3 декабря 2011 года . Проверено 18 сентября 2008 г.
- ^ «В чем преимущество XML-RPC перед простым XML?» . Переполнение стека . 9 сентября 2009 года . Проверено 7 апреля 2011 г.
- ^ «Открытый опрос о преимуществах XmlRpc по сравнению с альтернативами» . Intertwingly.net. 22 ноября 2006 г. Проверено 7 апреля 2011 г.
- ^ Джон Канади (14 января 2010 г.). «Если у вас есть REST, то почему XML-RPC?» . joncanady.com. Архивировано из оригинала 11 мая 2013 года . Проверено 7 апреля 2011 г.