Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #83, НОЯБРЬ 2005 г.

Самопальный сервис

eto'o

Хакер, номер #083, стр. 083-124-1


Создание web-сервисов с использованием XML-RPC

Все в последнее время помешались на web-сервисах. Все больше людей читают новости и форумы через RSS, поисковик Google позволяет осуществлять запросы через автоматические http-интерфейсы, интернет-платежи можно также элементарным образом процессить через web-гейты. Пришло время разобраться с тем, как все это работает и каким образом можно организовать собственный сервис. Я расскажу тебе о простом, стандартизованном и, должно быть, самом популярном способе - об XML-RPC.

[какие еще сервисы?]

Вообще говоря, резонный вопрос :). В самом деле, какие еще сервисы, о чем я? С появлением Интернета люди стали создавать массу разнообразных продуктов: кто-то написал первый форум, кто-то наколбасил сложную распределенную вычислительную систему для обсчета какого-нибудь научного опыта, кто-то решил сделать поисковый центр, кто-то - организовать платежную систему и так далее. У всех таких систем всегда есть, как минимум, две взаимодействующие части: сервер и клиент. Само собой, им для этого нужно как-то общаться. Ну, скажем, вот твой браузер, когда ты читаешь форум на xakep.ru, взаимодействует с web-сервером при помощи протокола http; твой wm-keaper работает с платежным центром WM при помощи какого-то другого прикладного протокола. Казалось, все просто супер, но на практике не совсем так.

Порой, расплывчатость описаний определенных стандартов или их нечеткая реализация, приводила к несовместимости отдельных систем. Кроме того, ребром встала проблема взаимодействия между удаленными системами, работающими под различными платформами. Каким образом удобнее всего осуществить обмен информацией между, скажем, какой-то программой, написанной для Windows, и некоторым cgi-приложением под Unix? Масса людей нашла ответ на этот вопрос в создании собственных, порой, нелепых «протоколов». Но вот фигня - все они были разными и абсолютно несовместимыми друг с другом. Это было неудобно, да и городить каждый раз какое-то новое решение - это маразм. Поэтому программисты решили разработать единый стандарт, основанный на использовании XML-представления запросов и ответов, который получил название XML-RPC. RPC здесь расшифровывается так: Remote Procedure Call (Удаленный Вызов Процедур). Чтобы было понятнее, о чем я говорю, расскажу, какого рода сервисы и системы можно создавать при помощи этой технологии.

[примеры сервисов]

Хороший пример - организация ботнета, управляемого по http. Создавая десятки таких систем, люди обычно городят какой-то огород с управлением. Кто-то использует HTTP GET, кто-то передает запросы в виде отдельных переменных, посланных POST'ом. Но все эти данные обрабатываются в скрипте и это дополнительный геморрой, особенно при мощной функциональности ботнета и его распределенной структуре. Ну, представь, что для регистрации новых ботов используется не один сервер, а десяток. Нужно, во-первых, каким-то образом осуществлять взаимодействие между ботами и этими серверами, а во-вторых, обеспечить линковку между самими серверами регистрации, чтобы вся информация была доступна из единого «центра управления». Использование XML-RPC здесь позволит, во-первых, сократить время на разработку управляющей системы, во-вторых, легко подогнать и переделать ее под любого другого бота. Стоит ли говорить о максимальной совместимости и простоте такого подхода.

Содержание  Вперед на стр. 083-124-2