Корпоративные решения
Крупные компании обычно предпочитают, чтобы их сайт (точнее, Web-сервер) располагался у них и обслуживался собственными сотрудниками. Как правило, подобная потребность возникает, если корпоративный сайт - это не просто набор HTML-страничек, а программная система э-бизнеса, связанная с СУБД и требующая объемного программирования. Тогда вместе с Web-сервером лучше установить собственный WAP-сервер с внутренним WAP-шлюзом. Он сам компилирует WML-страницы и передает внешнему WAP-шлюзу информацию уже в двоичном виде (при этом внешний шлюз без дополнительной обработки просто пересылает ее на телефон). Полноценный WAP-сервер может применяться, например, для шифрования информации по оригинальным алгоритмам, что требует полного контроля за работой шлюза.
Основы WAP-программирования (WML).
Основы WAP-программирования (WML).
Программируем на WML
WML во многом напоминает HTML, и изучить его не составляет труда. Однако при использовании WML приходится придерживаться нескольких неформальных рекомендаций.
По WAP-протоколу данные в телефон поступают в виде колод (desks), размер одной колоды невелик - порядка 1,5 Кб. Это сделано для повышения эффективности трафика, и разработчику желательно предварительно компилировать WML-тексты для подбора их оптимальных размеров. Колода состоит из карт (cards), каждая из которых описывает один законченный модуль взаимодействия с пользователем (интерактивный элемент экрана) и определяет способ навигации внутри колоды.
WML-тексты чувствительны к регистру (как тексты на языке Си), и в этом состоит одна из хоть и непринципиальных, но важных в практическом плане особенностей WML. Последовательности символов переводов строки, табуляции, пробелов всегда преобразуются в один пробел.
Все WML-документы имеют расширение .wml и начинаются с трех стандартных строк:
<?xml version="1.0"?> (номер версии XML)<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" > (идентификатор SGML-описания языка WML)
<A HREF="http://www.wapforum.org/DTD/wml_1.1.xml"> (Web-адрес DTD-определения WML-документа)
Колода берется в теги
<wml>
...
</wml>
Внутри колоды друг за другом следуют описания карт:
<card>
...
</card>
<card>
...
</card>
...
С помощью специальных шаблонов можно определять дополнительные стандартные действия при обращении к некоторым или ко всем картам колоды.
Каждая карта должна иметь свой идентификатор и название:
<card id="wap.pcweek.card1" title="pcweek.ru demonstraciya">
Здесь надо отметить, что так как далеко не все используемые в нашей стране WAP-телефоны русифицированы, WAP-дизайнеру обязательно надо предлагать несколько видов представления своих ресурсов - в частности, на транслите (латинскими буквами).
Большинство тегов WML - парные, т. е. открывающие и закрывающие, как того требует стандарт XML, за небольшими исключениями, например, кроме тега новой строки
.
Простейший тег <p> описывает один параграф текста:
<p>
Dobro pozhalovat' na wap-server pcweek.ru!
</p>
Законченная страничка (она может быть, например, сохранена на сайте wap.pcweek.ru как заглавная - index.wml) полностью запишется так:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" > <A HREF="http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="wap.pcweek.card1" title="pcweek.ru demonstraciya"> <p> Dobro pozhalovat' na wap-server pcweek.ru! </p> </card> </wml>На картинке можно увидеть одно из возможных представлений wap-сайта.
Если выводимый текст не умещается на мониторе трубки, то пользователю придется его скроллировать, поэтому лучше не создавать больших карт и колод, а разбивать их на маленькие составляющие, снабжая продуманными средствами навигации.
Для привязки различных функций к средствам управления телефона служит тег . Его важнейшие атрибуты - type (тип действия; значение accept задает переход к следующей карте, значение prev - к предыдущей), name (идентификатор для связи с данной реализацией тега) и label (название действия, выводимое на экран в область навигации).
Конкретный адрес перехода задается непарным тегом .
Среди других WML-тегов можно отметить средства захвата пользовательского ввода, создания всевозможных списков, расширенной навигации, форматирования текста. Кроме того, имеются переменные, начинающиеся с символа $ и позволяющие передавать данные между картами.
Следующий пример описывает колоду из двух карт. Первая, с заголовком экрана "Карта 1", выводит подсказку "Vvedite imya:" (телефон Б), а после ввода и выбора действия "Sled" активизирует вторую карту, которая показывает на экране телефона приветствие с ранее введенным именем и позволяет выполнить переход на сайт wap.zdnet.ru:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" > <A HREF="http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="Card1" title="Karta 1"> <do type="accept" label="Sled"> <go href="#Card2"/> </do> <p> Vvedite imya: <input name="username"/> </p> </card> <card id="Card2" title="Karta 2"> <do type="accept" label="ZdNet.Ru"> <go href="http://wap.zdnet.ru"/> </do> <p> Privet, $(username)! </p> </card> </wml>(телефон В).
На WML-страничке можно также размещать небольшие сценарии на языке WMLScript, представляющем собой подмножество JavaScript и оптимизированном для выполнения на мобильных устройствах с малыми вычислительными ресурсами.
Сформированную таким образом WML-страничку можно положить, например, по обычному FTP-протоколу на поддомен wap.pcweek.ru (это стандартная практика - организовывать для WAP-доступа сайты, начинающиеся не с www, а с wap), после чего этот поддомен станет новым российским WAP-ресурсом.
Перспективы
Как уже говорилось, рынок WAP-телефонов растет очень стремительно, но и технологии мобильной связи тоже не стоят на месте. В этом году* намечен запуск первых мобильных сетей на базе нового протокола GPRS (General P1acket Radio Service), предлагающего высокоскоростную доставку данных. Через два-три года должны появиться сети следующего поколения UMTS. Эти технологии, как предполагается, позволят работать с Интернетом на основе его собственных протоколов HTTP, POP/SMTP и т. д.
Но не станет ли WAP неким промежуточным звеном при переходе к GPRS? Нет. GPRS будет без сомнения обладать своими минусами, отличаться от WAP в способах оплаты (за трафик, а не за время), а главное, возможность обращения к HTML-страницам напрямую не даст никакой выгоды пользователям трубок с экраном в три текстовых строки или разрешением 60х80 (более мощные модели будут стоить не дешевле ПК) и только принесет дополнительные проблемы с навигацией. Все равно для пользователей GPRS-телефонов придется создавать сайты с HTML-контентом, напоминающим WML-структуры, возможно, в кодировке UNICODE - но WAP уже сейчас предлагает готовые, хорошие и ориентированные на мобильные телефоны интерфейсы, поэтому со временем WAP-протокол просто станет так называемым "Приложением GPRS", заняв свою большую устойчивую нишу. Поэтому нельзя относиться к WAP как к переходной технологии - она может принести (и приносит) ощутимую пользу.
Большую помощь при выяснении особенностей WAP-технологии оказал Роман Лаптев, ведущий каталога российских WAP-ресурсов (roma@wapgate.ru; Web: http://www.wapgate.ru/; WAP: http://wapgate.ru/).
Проблемы
Создание серьезного WAP-ресурса - задача на самом деле гораздо более сложная, нежели может показаться на первый взгляд. WAP-технология в силу определенной дороговизны будет применяться прежде всего для принятия оперативных решений и быстрого получения важной информации, а не для развлечений и просмотра электронных библиотек. Однако WAP-телефон может принимать только двоичное представление WML-страницы с несложным сценарием. Естественно, никаких других протоколов (в частности, почтовых POP/SMTP) WAP не поддерживает. Поэтому, чтобы предоставить клиенту возможность прочитать свою электронную почту, надо сделать примерно следующее: получив с трубки запрос к WML-странице со списком поступивших писем (перед этим, очевидно, потребуется ввести пароль и логин, а в ряде ситуаций указать и адрес POP-сервера), Web-сервер должен обратиться к почтовому серверу, получить список писем, динамически сформировать из него WML-страницу и вернуть ее на WA P-шлюз. Схожим образом работают популярные Интернет-системы бесплатной почты, доступной из браузеров. То есть объемы программирования при создании хороших WAP-ресурсов весьма велики.
Программировать или брать готовое?
Это старый вопрос, нередко решающийся в России в пользу программирования ("программисты получают зарплату, вот пусть они и напишут нам все"). Особенно остро он встает при создании масштабных WAP-решений. С учетом вышесказанного, а также проблем с неполной совместимостью версий WAP-протокола и наличия большого числа WAP-трубок, значительно различающихся способами интерпретации и представления WML-страниц, лучше, конечно, воспользоваться готовыми решениями. Они снимают большинство проблем, так как их созданием заняты крупные компьютерные компании.
Свободно распространяемый WAM/ SMS-шлюз для Unix можно найти на сайте http://www.kannel.org/ Популярный Nokia WAP Server 1.1 для Windows NT, Sun Solaris и HP-UX расположен по адресу:
http://www.nokia.com/corporate/wap/gateway.html Стоит он примерно 10 тыс. долл.
В качестве примера продуманного корпоративного решения можно назвать ПО, предлагаемое компанией Software AG. Шлюз Tamino/WAP, полностью написанный на Java и использующий в своей основе XML-сервер Tamino, поддерживает работу с любым WAP-телефоном независимо от производителя. Это достигается с помощью таблиц стилей XML, позволяющих преобразовать информацию в формате XML в различные целевые форматы, в том числе WML. В Tamino/WAP реализованы так называемые WAP-объекты, отделенные от бизнес-логики (наборов правил обработки WAP-запросов), благодаря чему изменения версии стандарта WAP потребуют внесения коррективов только в описания этих объектов. WAP-объекты выдают ответ в виде WML-текста на основе хранящихся в Tamino/WAP спецификаций каждого мобильного устройства и учитывающих, например, порядок выдачи информации на экране, рекомендации по навигации и т. п.
Российские WAP-ресурсы
Если по поводу первого российского Web-сайта до сих пор идут споры на тему "кто появился раньше", то первый отечественный общедоступный WAP-ресурс можно назвать точно - это http://wap.billing.ru/, открытый компанией "Петер-Сервис ЛТД" 21 (по другим сведениям - 26) мая 1999 г.
Сегодня наиболее популярные сайты по WAP-тематике - это каталог российских WAP-ресурсов
http://www.wapgate.ru/ (WAP:
http://wapgate.ru/) и сайт "Сотовик" (http://www.sotovik.ru/analit_17.htm). На сайте www.aspid.ru/wap ведется конференция WAP-разработчиков. Схожая по тематике Web-страничка -
http://www.wapchat.ru/phones Сайт
http://wapmail.ru/ предоставляет почтовый WAP-интерфейс. Подобный интерфейс предлагает и Web-служба http://www.mail.ru/ для своих бесплатных почтовых ящиков.
Средства разработки и тестирования
Готовить WML-ресурсы лучше в специализированном текстовом редакторе, правильно подсвечивающем все теги (например, в HotDog 6 Pro), хотя подойдет, конечно, любой другой. Продумывать структуру WML-страницы надо гораздо тщательнее, нежели HTML-файл, так как она должна хорошо просматриваться и на телефоне с двумя текстовыми строками, и на телефоне с приличным графическим экраном. Необходимо учитывать и способы клавиатурной навигации. Они в разных трубках очень сильно различаются.
Хороший WML-интерфейс - это экономия времени работы пользователя, за которую он платит немалые деньги. Поэтому не надо создавать глубоко вложенных страниц, интерфейс должен быть максимально упрощенным и линейным, объем предлагаемых сведений - минимальным и хорошо структурированным, а каждая из задействованных клавиш должна активно работать. Желательно ограничить (в идеале свести к нулю) объем текстовой информации, которую пользователю потребуется вводить вручную.
В Интернете легко доступны средства разработки и тестирования WML-ресурсов - это, например, бесплатный набор Nokia WAP Toolkit (http://www.forum.nokia.com/), написанный на Java. Он включает в себя редактор с подсветкой тегов, эмулятор WAP-шлюза (фактически JIT-компилятор WML-страниц), эмулятор WAP-телефона Nokia 7110 (WAP 1.1) и эмулятор абстрактного телефона, поддерживающего WAP 1.2. Данный комплект позволяет набирать WML-тексты (например на транслите) и тестировать их на ПК (правда, работает он не очень шустро).
При создании реального WAP-ресурса его обязательно следует проверять с помощью настоящих WAP-телефонов хотя бы нескольких популярных в России марок (по информации магазинов и коммерческих подразделений операторов сотовой связи, торгующих мобильными телефонами, это Nokia, Ericsson, Siemens и Motorola).
WAP-русификация
В рассмотренных выше примерах русский текст набирался на транслите. Если WAP-телефон русифицирован, то русский текст на WML-страницах должен поставляться в кодировке UNICODE, но так как не все продающиеся в России WAP-телефоны понимают русский текст, то хорошим тоном по отношению к посетителю WAP-сайта надо считать поддержку и предложение на выбор UNICODE или транслита (примерно как на Web-сайтах пишут "win/koi/mac/dos").
Насколько мне известно, пока ни один российский Интернет-провайдер не предоставляет полноценный виртуальный WAP-хостинг (бесплатный wap.-поддомен, автозагрузка с него странички index.wml и перекодировка в UNICODE/транслит - а ведь работы тут на полчаса). О провайдере, который первым реально предложит такую услугу, я обязательно напишу в PC Week/RE.
Зарубежные WAP-ресурсы
Их очень много. Можно привести, например, раздел рубрикатора
Yahoo!.
Еще один каталог WAP-ресурсов и WAP-эмуляторов - http://www.gelon.net/