Формат обмена данными при классической модели RPC (DCOM, CORBA) является бинарным, что неудобно, если надо организовать работу распределенной системы, где между отдельными участками сети стоят firewall/прокси-серверы. Кроме того, технология DCOM реализована только для Windows-систем, CORBA функционирует преимущественно в среде J2EE. Поэтому развиваются технологии, основанные на обмене данными в виде XML-документов. Это SOAP и XML-RPC.
Основным транспортом в XML-RPC. является протокол HTTP. Использование XML. и HTTP снимает ограничения, налагаемые как на конфигурацию сети, так и на маршрут следования пакетов.- Вызовы XML-RPC представляют собой простые типы данных text/xml и свободно проходят сквозь шлюзы везде, где допускается ретрансляция http-трафика.
Рассмотрим примеры запросов и ответов в XML-RPC. В запросе сначала задается HTTP-заголовок (в примере метод POST) [1]:
POST /RPC2 HTTP/1.0
User-Agent: MyAPP-Word/5.1.2 (WinNT)
Host: server.localnet.com
Content-Type: text/xml
Content-length: 172
затем следует собственно запрос в виде XML-документа:
<? xml version="1.0"?>
<methodCall>
<methodName>имя вызываемого метода</methodName>
<params>
<param>
<value>значение передаваемого параметра</value>
</param>
<param>
<value>значение передаваемого параметра</value>
</param>
.  .  .
</params>
</methodCall>
Пример XML-RPC ответа:
HTTP/1.1 200 OK
Connection: close
Content-Length: 166
Content-Type: text/xml
Date: Fri, 17 Jul 1998 19:55:08 GMT
Server: MyWordCheckSerwer/5.1.2-WinNT
<? xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>значение параметра результата</value>
</param>
<param>
<value>значение параметра результата</value>
</param>
.  .  .
</params>
</methodResponse>
В протоколе XML-RPC для передачи параметров методу и возвращаемых значений предусмотрено семь простых типов данных и два сложных. Эти типы отображают основные типы данных реальных языков программирования. Более сложные типы, такие, например, как объекты, нужно передавать в двоичном виде или заменять структурами.
Пример описания структуры из двух строковых элементов:
<struct>
<member>
<name>FirstWord</name>
<value><string>Hello</string></value>
</member>
<member>
<name>SecondWord</name>
<value><string>World!</string></value>
</member>
</struct>
Список литературы
1. А.Лозовюк. XML-RPC: вызов процедур посредством XML/ Сайт CitForum.