XML-RPC (от  — XML-вызов удалённых процедур) — стандарт/протокол вызова удалённых процедур, использующий XML для кодирования своих сообщений и HTTP в качестве транспортного механизмаSimon St. Laurent, Joe Johnston, Edd Dumbill. (June 2001) Programming Web Services with XML-RPC. O'Reilly. First Edition.. Является прародителем SOAP, отличается исключительной простотой в применении. XML-RPC, как и любой другой интерфейс Remote Procedure Call (RPC), определяет набор стандартных типов данных и команд, которые программист может использовать для доступа к функциональности другой программы, находящейся на другом компьютере в сети.

История Протокол XML-RPC был изначально разработан Дэйвом Винером из компании «UserLand Software» в сотрудничестве с Майкрософт, в 1998 году. Однако корпорация Майкрософт вскоре сочла этот протокол слишком упрощённым, и начала расширять его функциональность. После нескольких циклов по расширению функциональности появилась система, ныне известная как SOAP. Позднее Майкрософт начала широко рекламировать и внедрять SOAP, а изначальный XML-RPC был отвергнут. Но, несмотря на отвержение его Майкрософтом, стандарт XML-RPC очаровал многих программистов своей необычайной простотой и за счёт этого существует по сей день и даже постепенно набирает популярность.

Типы данных Имя типаПример тегаОписание типаarray <array> <data> <value><i4>1404</i4></value> <value><string>Что-нибудь здесь</string></value> <value><i4>1</i4></value> </data> </array>Массив величин, без ключейbase64<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>Кодированные в Base64 двоичные данныеboolean<boolean>1</boolean>Логическая (булева) величина (0 или 1)date/time<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>Дата и времяdouble<double>-12.53</double>Дробная величина двойной точностиinteger<i4>42</i4>Целое числоstring<string>Здравствуй, Мир!</string>Строка символов (в той же кодировке, что и весь XML-документ)struct <struct> <member> <name>Что-то</name> <value><i4>1</i4></value> </member> <member> <name>Ещё что-то</name> <value><i4>2</i4></value> </member> </struct>Массив величин, с ключамиnil<nil/>Нулевая (пустая) величина — это расширение XML-RPC

Примеры Типичный пример запроса XML-RPC: <?xml version="1.0"?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>41</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.

Несмотря на простоту реализации и кроссплатформенность, протокол XML-RPC подвергался критике за неэффективность при использовании в реальных средах. Так, накладные расходы на XML-разметку по сравнению с бинарными протоколами могут быть в разы, а в ряде случаев – на порядок больше. Нагрузка на центральный процессор при этом может увеличиваться в десятки раз.

См. также XML SOAP Веб-служба (а также WSDL и UDDI) RSS OPML BPEL MetaWeblog

Примечания

Ссылки Официальный сайт XML-RPC XML-RPC for PHP (PHPXMLRPC) — библиотека для ускорения разработки веб-сервисов (написана создателем самого протокола XML-RPC) Пишем свой web-сервис на PHP и XML-RPC  — статья о технологии на phpclub.ru .Net реализация XML-RPC Форум XML-RPC Руководства по XML-RPC Технологические отчёты по XML-RPC Jabber-RPC — XML-RPC по протоколу XMPP Apache, XML-RPC и безопасность XML-RPC Specification Спецификация XML-RPC - русский перевод

Категория:XML Категория:Интернет-протоколы Категория:Удалённый вызов процедур