XML-RPC
XML-RPC (от англ. eXtensible Markup Language Remote Procedure Call — XML-вызов удалённых процедур) — стандарт/протокол вызова удалённых процедур, использующий XML для кодирования своих сообщений и HTTP в качестве транспортного механизма[1]. Является прародителем 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
- SOAP
- Веб-служба (а также WSDL и UDDI)
- RSS
- OPML
- BPEL
- MetaWeblog
Ссылки
- ↑ Simon St. Laurent, Joe Johnston, Edd Dumbill. (June 2001) Programming Web Services with XML-RPC. O'Reilly. First Edition.
- Официальный сайт XML-RPC
- XML-RPC for PHP (PHPXMLRPC) — библиотека для ускорения разработки веб-сервисов (написана создателем самого протокола XML-RPC)
- Пишем свой web-сервис на PHP и XML-RPC Архивная копия от 15 сентября 2008 на Wayback Machine — статья о технологии на phpclub.ru
- .Net реализация XML-RPC
- Форум XML-RPC
- Руководства по XML-RPC
- Технологические отчёты по XML-RPC
- Jabber-RPC — XML-RPC по протоколу XMPP
- Apache, XML-RPC и безопасность
- XML-RPC Specification
- Спецификация XML-RPC - русский перевод
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.