10 лет назад 2 февраля 2010 в 15:43 257

Один из наиболее удобных способов решения этой задачи – технология SyncML. Наш материал посвящен обзору одного из самых интересных проектов, созданных на ее основе, – Funambol (http://www.funambol.com/). Это не просто онлайновый сервис синхронизации, но и мощный инструмент для создания своего собственного SyncML-сервера.

SyncML

Зачем нам нужен SyncML?
Протокол SyncML – это технология, специально разработанная для синхронизации информации между гаджетами. Она основана на языке XML и учитывает многие особенности мобильных платформ: данные при передаче сжимаются, предусмотрено восстановление сессий при обрыве связи и другие тонкости. Причем эта технология достаточно проста в реализации.

SyncML можно использовать не только на смартфонах или коммуникаторах, но и на обычных телефонах, даже далеко не самых новых моделей. В результате синхронизироваться «по SyncML» с помощью только лишь штатного софта способно огромное количество устройств от большинства крупных производителей. Благодаря SyncML можно передавать записи адресных книг, заметки, напоминания, архивы SMS или почтовых клиентов – конкретный набор доступных функций зависит от модели телефона или коммуникатора.

Синхронизируемые данные представляют собой обычные пакеты, которые передаются на сервер с помощью любой доступной технологии беспроводного подключения к интернету. Получить доступ ко многим SyncML-серверам можно и с помощью компьютера. В результате появляется возможность удобного редактирования данных посредством веб-интерфейса, а также синхронизации с онлайновой копией контента локальных приложений-органайзеров (MS Outlook, Lotus Notes и т. д.).

Для работы с подобным сервисом достаточно один раз выполнить настройку телефона. Многие серверы поддерживают автоматическую отправку параметров соединения с помощью SMS. В таком случае настройка сводится к сохранению нужных сведений – от пользователя понадобится разве что ввести секретный код, который сообщается ему при регистрации онлайнового аккаунта.

Портал myFunambol
Основной бизнес Funambol – это внедрение и поддержка SyncML-сервисов сторонних компаний. Портал myFunambol – это полнофункциональный демонстратор возможностей предлагаемой технологии. Дабы не создавать конкуренцию сервисам заказчиков, многие из которых являются платными, разработчики Funambol приняли очень неудобную для конечных пользователей модель – срок действия всех новых аккаунтов ограничен одним месяцем. Никаких платных продлений не предусмотрено – это принципиальная позиция команды Funambol.

Функциональность myFunambol находится на уровне лучших онлайновых сервисов для синхронизации данных по SyncML
Функциональность myFunambol находится на уровне лучших онлайновых сервисов для синхронизации данных по SyncML

Однако это не значит, что данным ресурсом нельзя пользоваться для постоянной синхронизации данных. Аккаунты, зарегистрированные на старой версии портала, которая работала до 1 октября этого года, не имеют ограничений по сроку действия. Кроме того, действует специальная программа для блогеров: разместив у себя материал о Funambol и пригласив на myFunambol десять человек, можно отправить менеджерам Funambol почтовый запрос на получение бесплатных постоянно действующих аккаунтов.

Пользуясь myFunambol уже несколько месяцев, могу заметить, что новая версия портала – это, конечно, шаг вперед в плане функциональности и изящества интерфейса, однако в ней, к сожалению, появился и ряд недостатков, которых не было раньше. Начнем с того, что новый портал отказался нормально работать в моем рабочем браузере Firefox 3.5, испытывая мое терпение сообщениями «Please wait for loading…» и постоянными перезагрузками страницы. Пришлось колдовать с поочередным отключением установленных плагинов. В Internet Explorer 8 такой неприятности не возникало, однако скорость работы портала оставляла желать лучшего. Надеюсь, что эта проблема носит временный характер, – все-таки в описании ресурса заявлена совместимость со всеми современными обозревателями. Остается только немного поворчать о том, что в старой версии myFunambol к производительности и совместимости никаких вопросов не было.

Функциональность myFunambol находится на уровне лучших онлайновых сервисов для синхронизации данных по SyncML. На домашней странице аккаунта используется многоколоночный интерфейс, предлагающий быстрый доступ практически к любой сохраненной информации. Доступны архив сообщений, адресная книга и перечень отмеченных в календаре событий, а также ссылки для добавления к аккаунту новых устройств и установки вспомогательных приложений для работы с почтой и локальными программами-органайзерами.

К одной учетной записи myFunambol может быть присоединено несколько мобильных девайсов, что обеспечивает быстрый перенос данных между ними, а также позволяет реализовать некоторые интересные режимы работы, интегрированные с картографическими сервисами, – на сайте проекта есть любопытный видеоролик, демонстрирующий настройку синхронизации данных о событии в календаре с картами GPS-навигатора.

Эта функция реализуется в сотрудничестве с проектом Dash.net. Аккаунт Funambol можно соединить со своим почтовым ящиком. Это даст возможность импорта адресной книги, просмотра писем в интерфейсе myFunambol, а также перенаправления писем на мобильник. К сожалению, при импорте адресной книги Gmail сведения не всегда добавлялись в соответствующие поля сохраненной на myFunambol адресной книги телефона, что вело к созданию дублирующихся записей.

Процесс настройки мобильных устройств полностью автоматизирован – пользователю нужно только выбрать из внушительного списка модель своего телефона и указать его номер в международном формате, после чего на него отправляется SMS с необходимыми данными. Заметим, что скорость реакции сервера просто отменная – сообщение приходит практически мгновенно.

С помощью кнопок Contacts и Calendar можно перейти к полноэкранному режиму отображения соответствующих разделов. Для всех сохраненных элементов предлагаются удобные и достаточно функциональные онлайновые редакторы. MyFunambol весьма корректно обращается с синхронизируемыми данными. Проблем с русским языком, которые, например, иногда возникают на более раскрученном сервисе ZYB (http://www.zyb.com/), здесь нет. При передаче записей адресной книги сохраняются фотоснимки контактов, а при синхронизации календаря можно обнаружить в целости и сохранности не только информацию о событиях, но и все напоминания и заметки.

На сайте проекта предлагаются клиентские приложения для платформ Symbian, Windows Mobile, iPhone, BlackBerry, iPod и Java ME. Программы достаточно неплохо сделаны, вполне приятны в работе, однако интернет-трафик кушают с завидным аппетитом, о чем экономным пользователям лучше знать заранее. Еще раз заметим, что простая синхронизация архивов устройств с онлайновым хранилищем возможна и без установки клиента – с использованием стандартных опций смартфона или телефона. Клиент Funambol нужен только для получения дополнительной функциональности и повышения удобства работы.

Ход установки такого ПО элементарен: нажимаем кнопку на сайте, через считанные десятки секунд получаем SMS со ссылкой на скачивание поддерживаемой устройством версии приложения. После установки программы Funambol на всякий случай автоматически высылает еще одно «контрольное» сообщение с параметрами доступа к серверу.

Отдельно стоит упомянуть клиент синхронизации myFunambol и органайзера Microsoft Outlook – после его инсталляции в меню Outlook появляются опции синхронизации с сервером Funambol. В результате в нашем распоряжении оказывается весьма гибкая система обмена данными между компьютером и мобильными устройствами.

Строим собственный SyncML-сервер
MyFunambol – далеко не единственный онлайновый сервис SyncML-синхронизации мобильников. Выбор сейчас достаточно широк, и среди существующих ресурсов есть как коммерческие, так и бесплатные. Однако в некоторых случаях имеет смысл озаботиться созданием собственного SyncML-сервера. Например, идея хранения личной информации на удаленном общедоступном сервере может не понравиться пользователям, всерьез озабоченным приватностью: не секрет, что утечка или кража личных данных из адресной книги или календаря может иметь весьма и весьма неприятные последствия.

Персональный же SyncML-сервер позволяет получить полный контроль над синхронизируемыми сведениями. Независимый сервер может пригодиться и организациям, а также группам энтузиастов. Кроме коммерческих услуг по внедрению SyncML-решений разработчики Funambol предлагают бесплатные пакеты для развертывания своего сетевого ресурса. На сайте проекта можно скачать скомпилированные пакеты для Windows и Linux, а также исходные коды. Да-да, Funambol – это самый настоящий оупенсорсный продукт. Предлагаемые пакеты полностью готовы к работе и включают не только сам сервер, но и вспомогательные инструменты: графическую оболочку администрирования, тестовые веб- и Java-клиенты, а также пакеты Tomcat и Java Runtime Environment.

Если вы используете 32-разрядную операционную систему, то, скорее всего, Funambol запустится сразу после стандартной инсталляции без лишних плясок с бубном, сообщив о своей готовности к работе ободряющим подмигиванием зеленого значка на «Панели задач» Windows. В этом случае можете пролистнуть следующий раздел нашего обзора и переходить сразу к настройке сервера. Если же вы являетесь счастливым обладателем 64-разрядной системы – поздравляем: вам предстоит провести некоторое время в захватывающей борьбе. Победа, естественно, будет за вами (смайл).

Устанавливаем Funambol в 64-разрядной системе
Для начала необходимо дать некоторые пояснения. Дело в том, что наиболее современный дистрибутив Funambol v8 предназначен для использования только на 32-разрядных системах. К сожалению, на страничке закачки файла про это важное обстоятельство не сказано ни слова. Проблема проявляется при первой же попытке авторизоваться в администраторской панели Funambol – выдается сообщение о том, что сервер недоступен. Действительно, в списке выполняющихся процессов его нет, а попытки запустить сервер вручную не приносят никакого видимого результата.

Клиент синхронизации Funambol и MS Outlook позволяет построить гибкую систему синхронизации данных между компьютером и мобильными устройствами
Клиент синхронизации Funambol и MS Outlook позволяет построить гибкую систему синхронизации данных между компьютером и мобильными устройствами

Изучение справки Funambol приносит только осознание того факта, что авторы мануала либо упустили данный момент, либо просто скромно обошли проблему стороной, положившись на смекалку пользователей. Форумы поддержки Funambol полны стенаний и вопросов о том, когда же увидят свет 64-разрядные версии предлагаемых программ, – ведь их отсутствие, в частности, практически закрывает для Funambol путь «быстрого старта» в большинстве современных дистрибутивов Linux. Ответы сводятся к предложениям помочь разработчикам и самостоятельно поучаствовать в сборке нужных версий.

Однако нет худа без добра, и, как показывает практика, проблема заключена не в самом сервере, а в дополнительных инструментах, входящих в комплект поставки. Так что получить свой SyncML-сервер можно и без нетривиальных для большинства современных пользователей процедур компиляции приложений из исходников. Внимательное изучение обсуждений на форуме Funambol, подкрепленное некоторой долей собственных экспериментов, в итоге позволило найти подходящее решение.

Далее мы рассмотрим, пожалуй, наиболее сложный и показательный случай – установку Funambol на 64-разрядной версии Windows. В качестве подопытной тестовой системы в нашем обзоре будет использована обычная «домашняя» Windows Vista SP2. Как показывает изучение сообщений об ошибках, которые можно увидеть, запуская сервер из командной строки, корень проблемы кроется во взаимодействии Funambol с необходимым для его работы Java Runtime Environment. Дело в том, что с целью упрощения развертывания дистрибутива неподготовленными пользователями разработчики Funambol включили в его состав все необходимые для функционирования сервиса компоненты, в том числе и JRE версии 1.5.0, которая в 64-разрядной системе просто не функционирует.

Соответственно, задача запуска Funambol под 64-разрядной системой сводится к необходимости заставить его работать с более свежей версией Java-машины. Здесь есть несколько путей. Первый связан с правкой запускающих Funambol CMD-файлов, а второй заключается в использовании символьных ссылок. Мы будем применять оба способа. Нужные нам скрипты, участвующие в запуске Funambol, хранятся в каталоге bin.

Просмотрев код и почитав включенные в его текст комментарии, можно понять, что для указания пути к собственной Java-машине достаточно просто добавить в код команду set JAVA_HOME=”адрес каталога нужной Java-машины”. Заодно можно убрать из скриптов фрагменты, проверяющие путь к Java-машине и при сбое вызывающие встроенную в Funambol «неправильную» версию. После выполнения этих нехитрых операций сервер Funambol можно благополучно запустить из консоли.

Итак, сервер запущен, в чем можно убедиться, открыв в браузере страницу предлагаемого веб-клиента. Однако нас подстерегает новая проблема: после подобного вмешательства отказывается стартовать панель администрирования Funambol, которая также пытается обратиться к встроенному дистрибутиву JRE. В этом случае указать путь к другой виртуальной Java-машине нам поможет технология символьных ссылок.

Проверить работу сервера несложно. Это можно сделать с помощью заботливо включенных разработчиками в дистрибутив веб- и Java-клиентов
Проверить работу сервера несложно. Это можно сделать с помощью заботливо включенных разработчиками в дистрибутив веб- и Java-клиентов

Символьная ссылка, или, кратко, симлинк, – это специальный файл, хранящий путь к другому файлу. Изначально данная технология применялась в Unix-системах. В ОС семейства Windows поддержка символических ссылок была внедрена в файловой системе NTFS начиная с версии 2000. В Vista была добавлена возможность создавать симлинки не только на отдельные файлы, но и на каталоги. От ярлыка такой объект отличается более тесной связью с исходным объектом: например, при удалении пользователем данных они физически убираются с диска только при отсутствии на них таких ссылок. Что особенно важно для нас, программы будут воспринимать и обрабатывать симлинк так же, как и обычный файл, на который он ссылается.

Алгоритм действий следующий: сначала удаляем из папки tools сервера Funambol каталог jre, в котором находится «неправильная» Java-машина, а затем создаем вместо него симлинк, ведущий к рабочему каталогу нужной Java-машины. Не забывайте, что символическая ссылка и файл, на который она ссылается, должны находиться на одном логическом разделе файловой системы NTFS.

Создать символьную ссылку можно в консоли с помощью команд linkd или mklink (Windows Vista). Синтаксис команды прост: указываем имя будущей ссылки, а затем, после пробела, адрес нужного объекта – каталога установленной на компьютере основной Java-машины. Параметр /D в команде mklink укажет на то, что мы ссылаемся не на файл, а на каталог.

Если вы испытываете стойкую неприязнь к командной строке, то для создания симлинков можете воспользоваться специальными утилитами. Пожалуй, одна из наиболее простых и удобных – это программа NTFS Links (www.totalcmd.net/plugring/ntfslinks.html), реализованная как дополнение к популярному файловому менеджеру Total Commander. Пользователю достаточно выбрать в менеджере нужный файл или каталог, вызвать NTFS Links и указать в диалоговом окне адрес, по которому он хочет сохранить симлинк на выделенный объект. В результате мы наконец-то получим полностью работоспособный сервер Funambol на 64-разрядной Windows-машине. Аналогичными способами – ручной правкой скриптов и использованием симлинков, ведущих на рабочую Java-машину, – можно запустить Funambol и на Linux-компьютере.

Настройка Funambol и синхронизация мобильных устройств
Дальнейшая настройка системы детально описана в 72-страничном мануале Funambol, поэтому подробно мы на ней останавливаться не будем, а упомянем только основные моменты. Все-таки русского «хелпа» к Funambol пока нет и не предвидится, а языковой барьер никто не отменял. «Тюнинг» сервера производится из панели администрирования Funambol Administration Tool.

Если вы запускаете этот инструмент на том же компьютере, на котором установлен сам сервер, то все необходимые настройки вплоть до пароля администратора там уже будут заданы по умолчанию. Если же вы обращаетесь к серверу удаленно, то понадобится указать его адрес и параметры прокси. Нелишним также будет убедиться в том, что ваш файрволл разрешает подключаться к порту 8080, который по умолчанию используется для работы Funambol. Полагаю, напоминать о том, что ему для нормального функционирования понадобится постоянное соединение с интернетом и статический IP для доступа к нему извне, излишне.

Интерфейс администрирования Funambol состоит из боковой панели, где находится иерархический список всех активных компонентов, нижней панели состояния, куда выводится лог событий, и области редактирования выбранного элемента. Начинать работу стоит с настройки публичного адреса сервера, регистрации пользователей и ввода параметров соединения с синхронизируемыми мобильными устройствами. Для решения первой задачи служит раздел Server Settings – там среди основных параметров системы есть строка Server URI, где и указывается имя сервера или его IP, а также используемый для соединения порт.

В этом разделе также доступна настройка параметров шифрования передаваемых данных – для этого необходимо обратиться к элементу Data Transformer Manager. Элемент Synchronization Strategy предназначен для указания принципов обработки конфликтов измененных данных на мобильном устройстве и в БД сервера. Предлагается три готовых шаблона: Server Wins, Client Wins и Merge Data.

В первом случае при синхронизации данные сервера записываются «поверх» данных на мобильнике. Во втором приоритет получает мобильное устройство – если учесть, что гаджетом обычно пользуются чаще, чем онлайновым редактором, данная политика будет более предпочтительной при начале работы с Funambol. Третий вариант наиболее универсален: сервер сравнивает данные и пытается их объединить. При прямом конфликте приоритетом обладает мобильник.

После сохранения настроек вы получите доступ к вашему серверу и сможете нормально взаимодействовать с ним. Если возникает необходимость ручной правки параметров клиентских устройств, это можно сделать в отдельном разделе Devices. Работа с аккаунтами пользователей ведется на закладке Users. Создавая юзеров, используйте в их именах латиницу – к сожалению, по кириллическим символам впоследствии не будет вестись поиск, да и с логином могут возникнуть проблемы.

Интересно, что для облегчения регистрации большого количества клиентов доступна функция самостоятельной регистрации (self-provisioning). Все необходимые данные (логин и пароль) вводятся в параметры соединения непосредственно на мобильнике – при первом обращении они будут сохранены в базе. Важная часть функциональности Funambol – возможность взаимодействия с внешними почтовыми серверами и перенаправления сообщений на мобильные устройства. Соответствующие настройки собраны в разделе Modules > Funambol Email Connector.

Напомним, что при использовании POP-технологии разрешены только просмотр корневой папки Inbox и отправка сообщений через Outbox. При работе с IMAP возможности шире – доступна также синхронизация вложенных папок. Для облегчения работы в Funambol включены параметры настройки соединений с рядом популярных почтовых служб. Возможна и ручная правка списка серверов.

Для облегчения работы в Funambol включены параметры настройки соединений с рядом популярных почтовых служб
Для облегчения работы в Funambol включены параметры настройки соединений с рядом популярных почтовых служб

Затем учетные записи пользователей Funambol связываются с соответствующими почтовыми аккаунтами. Как правило, для получения доступа к своему ящику требуется только указать логин и пароль – остальные необходимые сведения подставляются автоматически из базы сохраненной информации о внешних серверах. Остается только включить опцию Email Push – и система благополучно заработает. Funambol также умеет перенаправлять сообщения e-mail в виде SMS, однако данная возможность не включена в бесплатный пакет.

Заметим, что наш сервер способен работать с мобильным клиентом Funambol, о котором мы уже рассказывали выше, а также синхронизироваться с Outlook – если, конечно, соответствующий клиент был установлен на ПК. Поскольку наш ресурс неспособен высылать настройки посредством SMS, «заточку» гаджетов придется производить вручную.

Для этого создается новый профиль синхронизации, в котором указывается URL сервера в формате http(s)://адрес_сервера:порт/funambol/ds, имя пользователя и его пароль, а также транспортный протокол (HTTP). Если в устройстве предусмотрены настройки Data Path или Database, то в них указываются синхронизируемые таблицы. Для Contacts нужно ввести значение card, для Calendar – cal. Для Tasks и Notes – task и note соответственно. На всякий случай перед первой попыткой синхронизации с собственным сервером не забудьте сделать полный бэкап данных вашего телефона.

Интерфейс и возможности демоверсии веб-клиента Funambol весьма аскетичны и на порядок уступают функциональности портала myFunambol. Справедливости ради заметим, что особых красот нам и не обещали, да и основной режим работы системы – это вовсе не правка записей в онлайновом редакторе, а автоматическая синхронизация данных, которая может происходить и скрытно от глаз пользователя.

Ну а если у вас есть желание и соответствующие знания, никто не запрещает провести самостоятельную доработку предлагаемых заготовок. Если вы всерьез заинтересуетесь созданием собственного SyncML-сервера, обязательно зарегистрируйтесь на форуме поддержки Funambol. Люди там собираются грамотные и вполне дружелюбные, да и сами разработчики захаживают частенько.

Никто не прокомментировал материал. Есть мысли?

Спасибо за статью!
Нашёл много информации нигде больше не рассматривавшейся. Но устал читать.. куда привычнее знакомиться с пошаговыми инструкциями 🙂
Есть способ запустить панель администрирования без использования симлинков. Для этого нужно в файле \Funambol\admin\etc\funamboladmin.conf изменить параметр jdkhome=”%путь_к_jre%”