Введение

Формат сериализации данных.

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

История

Протокол XML RPC был создан в 1998 году Дэйвом Уайнером из UserLand Software и компанией Microsoft, которая рассматривала этот протокол как ключевой элемент для масштабирования своих усилий в сфере электронной коммерции между предприятиями. С появлением новых функций стандарт эволюционировал и стал известен как SOAP. UserLand поддерживал XML RPC, начиная с версии 5.1 своей системы управления веб-контентом Frontier. Идея XML RPC о стандарте для HTTP-запросов и ответов, удобном для чтения и записи человеком и поддающемся обработке скриптами, также была реализована в конкурирующих спецификациях, таких как Web Distributed Data Exchange (WDDX) от Allaire и Web Interface Definition Language (WIDL) от webMethod. Ранее существовали технологии, такие как WebBroker от DataChannel, которые позволяли оборачивать объекты COM, CORBA и Java RMI в синтаксис XML и передавать их по HTTP. Общее использование XML для удаленного вызова процедур (RPC) было запатентовано Филиппом Мерриком, Стюартом Алленом и Джозефом Лаппом в апреле 2006 года, со ссылкой на приоритет предварительной заявки, поданной в марте 1998 года. Патент был передан компании webMethods, расположенной в Фэрфаксе, штат Вирджиния, и срок его действия истек 23 марта 2019 года.

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

В XML RPC клиент выполняет удаленный вызов процедур (RPC), отправляя HTTP-запрос на сервер, реализующий XML RPC, и получая HTTP-ответ. Вызов может содержать несколько параметров и возвращать один результат. Протокол определяет несколько типов данных для параметров и результата. Некоторые из этих типов данных являются составными, то есть вложенными. Например, параметр может представлять собой массив из пяти целых чисел. Структура параметров/результатов и набор типов данных разработаны таким образом, чтобы соответствовать типам, используемым в распространенных языках программирования. Идентификация клиентов для целей авторизации может быть реализована с использованием стандартных методов безопасности HTTP. Для идентификации и аутентификации можно использовать простую HTTP-аутентификацию. В отличие от RESTful-протоколов, где передаются представления ресурсов (документов), XML RPC предназначен для вызова методов. Основное различие заключается в том, что XML RPC имеет более строгую структуру, что позволяет использовать общий код библиотек для реализации клиентов и серверов и снижает объем работы по проектированию и документированию для конкретного прикладного протокола. Важное техническое отличие между типичными RESTful-протоколами и XML RPC состоит в том, что многие RESTful-протоколы используют HTTP URI для передачи информации о параметрах, в то время как в XML RPC URI служит только для идентификации сервера. JSON RPC аналогичен XML RPC.

Критика

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