Новый подход к веб-приложениям

Если и можно назвать "гламурным" что-то в современном проектировании интерфейсов, то это создание веб-приложений. В конце концов, когда в последний раз вы слышали чтобы кто-то восхищался интерфейсом продукта не размещённого в Интернете? ( Ладно, кроме iPod.) Все самые свежие и новаторские работы находятся в сети.

Несмотря на это, разработчики веб-интерфейсов не могут ничего поделать с завистью к своим коллегам, которые создают desktop-приложения. Обычные программы имеют всю ту силу и быстроту отклика, которые, кажутся недоступными для веб-приложений. Та же простота, которая способствовала быстрому распространению всемирной сети теперь создаёт разрыв между тем пользовательским взаимодействием, которое можем предоставить мы, и взаимодействием пользователей с настольными приложениями.

Этот разрыв сокращается. Взгляните на Google Suggest. Посмотрите, предполагаемые предложения почти непрерывно обновляются по мере того как вы вводите текст. Теперь зайдите на Google Maps. Увеличьте масштаб. Захватите курсором карту и подвигайте её туда-сюда. Опять же, всё происходит почти мгновенно, без всякого ожидания перезагрузки страницы. Google Suggest и Google Maps - вот два примера нового подхода к проектированию веб-приложений, который мы в компании Adaptive Path называем Ajax. Это понятие образовано как сокращение от <Асинхронный JavaScript + XML> и представляет собой фундаментальный прорыв наших представлений о возможностях веба.

Что такое Ajax

Ajax - не технология. На самом деле это несколько технологий преуспевающих каждая в своей области, собранных в новое сильное направление. Ajax объединяет:

* стандартизованное представление с использованием XHTML и CSS;
* динамическое отображение и взаимодействие при помощи Document Object Model;
* обмен и управление данными через XML и XSLT;
* асинхронные получение данных с использованием XMLHttpRequest;
* и JavaScript, связывающий всё это воедино.

Классическая модель веб-приложения действует следующим образом: большинство действий пользователя отправляют обратно на сервер HTTP-запрос. Сервер производит необходимую обработку - получает данные, обрабатывает числа, взаимодействует с различными унаследованными системами и затем выдаёт HTML страницу клиенту. Эта модель заимствована из первоначального применения веба как гипертекстовой среды, но те кто читали книгу знают, то что делает веб подходящим для гипертекста не обязательно делают его хорошим для программных приложений.



Рисунок 1: Сравнение традиционной модели веб-приложений (слева) с моделью Ajax (справа).

В этом подходе много технического смысла, но им не достигается хорошее взаимодействие с пользователем. Пока сервер делает свою работу, чем занимается пользователь? Правильно, ждёт. И с каждым следующим шагом пользователь ждёт ещё и ещё.

Очевидно, если бы мы создавали веб с нуля, то не стали бы заставлять пользователей всё время ждать. Если уж страница загружена, почему взаимодействие с пользователем должно останавливаться каждый раз, когда программе нужно что-то от сервера? В самом деле, зачем пользователю вообще видеть что приложение соединяется с сервером?

В чём отличие Ajax

Приложение Ajax исключает взаимодействие типа старт-стоп-старт-стоп путём введения механизма Ajax как промежуточного слоя между пользователем и сервером. Может показаться что добавляя новый уровень в приложение можно только замедлить его реакцию, но в действительности наоборот.

Вместо того чтобы загружать страницу в начале пользовательской сессии браузер загружает движок Ajax, написанный на JavaScript и обычно спрятанный в скрытый фрейм. Этот движок отвечает за формирование пользовательского интерфейса и взаимодействие с сервером от имени пользователя. Движок Ajax позволяет производить взаимодействие с пользователем асинхронно, то есть независимо от взаимодействия с сервером. Таким образом пользователю больше не нужно наблюдать пустое окно браузера и курсор в виде песочных часов в ожидании действий сервера.



Рисунок 2: Сравнение диаграмм взаимодействия традиционного веб-приложения (сверху) и асинхронного приложения Ajax (снизу).

Каждое действие пользователя, которое обычно производит HTTP-запрос, теперь вместо этого принимает форму JavaScript-вызова движка Ajax. Каждый ответ на действие пользователя, не требующее обращения к серверу, как то простая проверка данных, редактирование данных в памяти, и даже некоторая навигация, выполняется движком самостоятельно. Если же для ответа требуется информация с сервера, например загрузка дополнительного интерфейсного кода, передача данных для обработки, или получение новых данных, то движок производит необходимые запросы асинхронно, обычно при помощи XML, не прерывая взаимодействия пользователя с приложением.

Кто использует Ajax

Огромные инвестиции в разработку подхода Ajax делает Google. Все самые крупные продукты анонсированные за последний год - Orkut, Gmail, последние бета-версии Google Groups, Google Suggest, и Google Maps - приложения Ajax. (За техническими подробностями реализации Ajax обратитесь к отличным исследованиям Gmail, Google Suggest и Google Maps.) Остальные не отстают: многие любимые всеми свойства сервиса Flickr полагаются на Ajax, а механизмы поиска A9.com от Amazon используют похожую технологию.

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

Работая с Ajax последние несколько месяцев, мы в Adaptive Path поняли, что открыли только верхушку айсберга того богатства взаимодействия и скорости отклика, которые предоставляют приложения Ajax. Сейчас это важное направление развития веб-приложений, и его важность будет только расти. И учитывая большое количество разработчиков, которые уже умеют использовать эти технологии, мы ожидаем увидеть как всё больше организаций последуют примеру Google и используют конкурентные выгоды, которые предлагает Ajax.

Что дальше

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

Будет интересно.

Автор: Джесси Джеймс Гарретт