|
- Кирилл Кондратенко AKA Cybem, 5.12.03, Prefnews.ru, оригинал -
Сказание о боге Джа1
PsiMain *psi = new PsiMain;
QObject::connect(psi, SIGNAL(quit()), app, SLOT(quit()));
app->exec();
delete psi;
PSI Jabber client 0.9-CVS-20030930 /
main.cpp / L:338
C:9
Первое знакомство
С Джаббером меня познакомил DimonB
около полутора лет назад, когда я перешёл работать в Intersoft Lab, где и работаю
по сей день. Там он использовался как корпоративный стандарт обмена
мгновенными сообщениями. Мне сразу понравилась эта система и, сейчас, я
уже не представляю, как обходился без нее раньше. Этот ?XML-роутер?, эта простая и мощная и расширяемая технология
очаровала меня.
Однако, понимание сути и
глубины пришло намного позже. В первое время я воспринимал Джа как
продвинутый Instant Messaging. Ну открытый протокол, ну расширяемый,
распределенный, основанный на XML. Ну хранение контактов и настроек на
сервере в виде vCard, браузер ресурсов,
настраиваемые статусы и уведомления, юникод. Кого, кроме кучки вольных хакеров и технократов
это может интересовать? Это все хорошо, но IM он и на Марсе IM.
Just KISS
Позже, подписавшись на список
рассылки на jabber.org, я стал следить за развитием Jabber/XMPP, стал понимать, что Jabber ? больше чем IM. То, что сравнивают в Джаббере с другими IM сиcтемами,
такими, как ICQ, AIM, Yahoo, MSN и другими,
является лишь надводной частью айсберга данной технологии. Все больше и
больше программ поддерживало этот стандарт. Здесь
были и новые клиенты (LLuna), и системы групповой работы (Chandler), и всевозможные роботы, и библиотеки на
разных платформах (JabXPCOM, SoapBox Framework). Сообщение о том, что XMPP
принят в качестве стандарта для Internet 2, еще
более усилило веру в данную технологию. Джаббером
все больше и больше интересуются как огромные корпорации, так и рынок
SOHO.
И действительно, XMPP построен
полностью в соответствии с инженерным принципом
KISS (Keep It Small and Simple). Он очень прост в интеграции, использовании,
разработке. Область применимости данной технологии ? бесконечна.
Маршрутизируемый байт-поток XML может найти применение практически везде.
Везде, где требуется надежный интероперабельный обмен информацией на любые
расстояния. Небольшой пример: реализация вызова удаленной процедуры с
помощью одной из Jabber-библиотек может быть в
разы более простой, чем при использовании XML-RPC, и уж, тем более, SOAP.
Уверен, что на Python это займет лишь несколько
строк. При этом, легкость проникновения XMPP-потока через сетевые экраны
может быть практически такой же, как и при использовании этих стандартов.
Аналогичный UDDI функционал может быть достигнут путём использования сервиса browser/disco. Бытует мнение,
что со временем XMPP может стать неким универсальным транспортом,
универсальной системой обмена информации и поиска ресурсов и сервисов,
вытеснив и SMTP, и POP3, и IMAP, RSS, LDAP, RPC и т.д. Что ж, подождём ? увидим.
Джаббер-технология находиться только в самом
начале своего пути.
Дела насущные
С помощью Джаббера очень просто реализовывать ботов для разных
задач. Это могут быть такие повседневные задачи, как, например, мониторинг
состояний серверов и сервисов или, вообще, чего либо, выдача динамического
IP-адреса компьютера по запросу, запуск удаленных приложений,
периодический парсинг сайтов и выдача новостей и
т.д. Уверен, немало удовольствия может принести
связка Джаббера с GNU Chess. А прогноз погоды, курсы валют и последние новости
с RSS-каналов будут полезны всем. С помощью Джаббера можно реализовывать сервисы, аналогичные тем,
что предлагают операторы мобильной связи через SMS. И даже больше. Уверен,
что с ростом пользовательской базы данной технологии, количество таких
сервисов будет неуклонно расти. Возможно, даже появятся коммерческие
сервисы, подобные развлекательным и чисто техническим, таким, как сейчас
реализуются в рамках SOAP.
Drill down в технологию
Важно то, что Джаббер реализовывает концепцию
плавного перехода из других IM-систем. К серверу возможно подключение
транспортов, поддерживающих протоколы ICQ, AIM, Yahoo, IRC, MSN, SMS и даже, такие экзотические, как
весьма популярный в Польше Gadu-Gadu. При подключении соответствующего транспорта на
сервере в виде сервиса, вы не теряете возможности общаться со своими
друзьями и коллегами из других систем. Все это выглядит похожим на
использование мультипротокольного клиента, но в
данном случае, все операции происходят на сервере и, вам достаточно иметь
только Джаббер-клиент.
Джаббер является открытым, стабильным и устоявшимся
стандартом. Любой клиент поддерживает необходимый минимум возможностей. В
то же время, Джаббер ? динамически, интенсивно
развиваемый и экстримально расширяемый стандарт, в
отличии от других закрытых IM-протоколов. Работу над ним ведет сообщество
заинтересованных высоко квалифицированных специалистов. Любое предложение
по расширению или изменению стандарта оформляется в JEP (Jabber Proposed Enhancements), которое выносится на обсуждение.
Поддержать JEP на ранней стадии, или дождаться его включения в стандарт,
находится на совести разработчиков программного обеспечения. При этом, сам
стандарт, не диверсифецируется и не фрагментируется, обеспечивая, таким
образом, интероперабельность для всех программных решений на всех
платформах.
Реализация JEP происходит на
строне сервера и/или клиента. Упрощённо говоря, XMPP представляет собой
всего лишь XML-поток, а значит, в соответствии с идеологией XML, возможна
передача любой информации. При этом, обработать её, или проигнорировать ? дело сервера или клиента. И
именно эта особенность технологии является ключевой. Например, некоторые
клиенты реализуют функцию игры в шахматы (умеют показывать доску и
передавать положения фигур). Если ваш клиент и клиент вашего друга
поддерживают такую возможность ? вы можете сыграть с между собой. Если
сервер умеет обрабатывать информацию о положении фигур ? вы можете играть
с компьютером. На базе данной простой идеологии уже реализовано множество
интересных возможностей, о которых я расскажу ниже.
Джаббер ? распределенная
система, постороенная по образу и подобию электронной почты. Пользователь
сам волен выбрать себе сервер, при этом, естественно, происходит обмен
сообщениями и с пользователями других серверов. Идентификатор
Джаббер-пользователя (Jabber ID) очень похож на адрес электронной почты,
например: JohnSmith@jabber.org.
Согласитесь, только такой децентрализованный подход при построении
сверхбольших современных систем можно считать оптимальным. К тому же,
адреса при таком принципе организации запомнить легче, чем индексы со
множеством цифр (да, вы правильно поняли, это был камень в огород).
Сладкий десерт
Как уже говорилось выше, многие функции Джаббера доступны
в виде сервисов на сервере или плагинов на клиенте. Уже реализованы такие
интересные возможности, как игра в разные логические игры, whiteboard
(доска для совместного рисования), расшариваемые календари и расписания,
хранение истории сообщений на сервере. Джаббер предоставляет пользователю
такие вещи, как настраиваемые статусы и уведомления, аватары, передачу
контактов от пользователя к пользователю, групповые чаты, typing
уведомление, черные списки. Информация о контактах хранится в виде широко
распрастранённого и признаного стандарта vCard. И если такие особенности,
как передача файлов, SMS, юникод, соединение по SSL, поиск пользователей
уже давно являются признаками хорошего тона, то такие возможности, как
хранение контактов на сервере и шифрование сообщений с помощью GnuPG
лишними никак не назовёшь. Многие Джаббер-серверы предоставляют свои
уникальные сервисы. Например, на jabber.ru
с недавних пор имеется возможность подписываться на новостные
RSS-каналы.
Как вы видете, мир Джаббера безграничен и очень
интересен. В следующей части я расскажу о практическом опыте использования
этой уникальной технологии, в частности о Джаббер-клиентах. Я буду очень
рад, если после прочтения данного материала, Джаббер-сообщество приобретет
еще несколько сторонников, а отправными точками в ваших изысканиях могут
служить сайты jabber.ru и jabber.org.
1Jahveh (Яхве) - согласно Библии, имя Бога-отца. Растаманы называют его просто Джа. Растаманы - православные, смешавшие Библию и местные
эфиопские сказания в единую веру. Африканские легенды рассказывают о
Джа-борце за свободу и мир, воине-льве, великом и могучем повелителе и
защитнике всех животных.
|