Архивы: по дате | по разделам | по авторам

Технология, которая перевернёт веб

АрхивТехнологии
автор : Артем Савельев   16.06.2005

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

Свято веруя в то, что узкий специалист подобен флюсу, менеджеры по персоналу, описывая вакансии, часто включают в них все известные им аббревиатуры. Соискатели к таким странностям работодателей уже привыкли и автоматически включают в резюме заветный список, начинающийся с C++ и заканчивающийся XML. Однако стараниями маркетологов от программирования скоро этот список может пополниться еще одной аббревиатурой. На престижное место претендует AJAX - технология, которая перевернет веб.

"Перевернет веб" - это почти цитата. В "развитых странах" уже несколько лет обсасывается идея улучшенного веба, веба в версии 2.0. Разумеется, что именно нужно считать обновленным вебом, никто толком не знает. Точнее, знают-то все, но каждый знает свое, и в товарищах никакого согласья нет. Одни говорят, что новый лучший интернет должен быть построен на базе Semantic Web, другие уповают на социальные сети, третьи еще на что-то. С февраля 2005 года уповать можно еще и на AJAX - новый модный термин, знание которого причисляет человека к сонму людей, идущих не то чтобы в ногу со временем, а даже слегка впереди.

AJAX в действии

В отличие от множества "перспективных" подходов AJAX очень нагляден. Сайт, сделанный с помощью AJAX, субъективно работает гораздо быстрее обычного сайта. По крайней мере, он быстрее откликается на любые действия пользователя. Классические и, пожалуй, лучшие примеры использования AJAX - проекты Google Maps и Gmail - и это при том, что программисты Google во время работы над ними ни о каком AJAX и знать не знали. Запросы пользователей обрабатываются очень быстро, потому что использование идеологии AJAX позволяет не перезагружать страничку целиком, а обновлять на ней только те элементы, которые требуют обновления. У того же Gmail с недавнего времени есть обычный HTML-интерфейс для совместимости со старыми браузерами, и любой желающий может убедиться в том, что работает он в несколько раз медленнее, чем классический интерфейс Gmail.

Как это работает

AJAX расшифровывается как Asynchronous JavaScript + XML (асинхронный JavaScript+XML) и технологией в строгом смысле слова не является. Это просто аббревиатура, обозначающая подход к созданию веб-приложений с помощью следующих технологий:

  • стандартизированное представление силами XHTML и CSS;
  • динамическое отображение и взаимодействие с пользователем с помощью DOM;
  • обмен и обработка данных в виде XML и XSLT;
  • асинхронные запросы с помощью XMLHttpRequest;
  • JavaScript.

Если в стандартном веб-приложении обработкой всей информации занимается сервер, тогда как браузер отвечает только за взаимодействие с пользователем, передачу запросов и вывод поступившего HTML, то в AJAX-приложении между пользователем и сервером появляется еще один посредник - движок AJAX. Он определяет, какие запросы можно обработать "на месте", а за какими необходимо обращаться на сервер.

Поведение сервера тоже изменилось. Если раньше на каждый запрос сервер выдавал новую страницу, то теперь он отсылает лишь те данные, которые нужны клиенту, а HTML из них прямо в браузере формирует движок AJAX.

Асинхронность проявляется в том, что далеко не каждый клик пользователя доходит до сервера, причем обратное тоже справедливо - далеко не каждая реакция сервера обусловлена запросом пользователя. Большую часть запросов формирует движок AJAX, причем его можно написать так, что он будет загружать информацию превентивно, предугадывая действия пользователя.

Понятно, что с такой схемой работы качественная нагрузка на сервер меняется - если раньше запросов было мало, но каждый из них требовал значительных ресурсов (серверу нужно вытащить информацию из БД, сформировать из нее веб-страницу и отдать браузеру), то теперь задача сервера упрощается (формировать веб-страницы не нужно, да и объем передаваемых данных меньше), но запросов обрабатывать приходится больше.

Что из этого получится

AJAX появился совсем недавно. Один из первых реально работающих проектов появился в 2004 году (тот самый Gmail). Саму аббревиатуру изобрели только в начале этого года. Однако все ключевые технологии, необходимые для создания AJAX-приложений, были известны давным-давно.

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

Теоретически AJAX-приложения можно было создавать еще лет семь назад. Все необходимые составляющие к тому времени на рынке уже были. Однако вместо того, чтобы штурмом завоевать веб, AJAX в лучшем случае использовался в интранет-приложениях или для решения специфических подзадач. Представить себе приложение, сопоставимое по уровню сложности с Gmail, в 1998 году невозможно. Собственно, приложение такого уровня вообще было трудно представить до тех пор, пока программисты Google его не написали.


Так устроено классическое веб-приложение

Среди причин, помешавших AJAX сразу занять заслуженное место под солнцем, можно назвать неготовность индустрии (в 1997 году возможности привычных технологий были еще далеко не исчерпаны, и множество программистов с удовольствием игрались с Perl или PHP, не помышляя о смене архитектуры). Кроме того, заставить один и тот же код работать на всех браузерах в то время было невозможно - сейчас это сделать гораздо проще, хотя до сих пор некоторое шаманство требуется. Ну и наконец, клиентские машинки стали помощнее, и если в 1997 году для многих интернетчиков Javascript был назойливой примочкой, только замедляющей работу, то сегодня вполне можно передавать клиенту код из нескольких тысяч строк - если у пользователя нормальное подключение, то на передачу кода времени уйдет немного, а выполняться он будет без задержек на любой современной машине.


Устройство веб-приложения, использующего идеологию AJAX

Проблемы AJAX

С 1997 года много воды утекло, но до сих пор AJAX нельзя назвать совместимым с разноликим парком клиентских браузеров. На многих браузерах AJAX-приложения просто не работают (хотя последние версии IE, Firefox и даже Opera - начиная с восьмой версии - нормально его поддерживают). Кроме того, сейчас на AJAX возлагаются определенные надежды (по крайней мере, компанией Adaptive Path, которая придумала саму аббревиатуру и усиленно пиарит этот подход к созданию веб-приложений), и очень вероятно, что AJAX их оправдает не в полной мере.

Дело в том, что AJAX - не универсальная технология. Радость "первооткрывателей" сродни восторгу модницы, обнаружившей в сундуке отличное бабушкино платье, в котором очень прикольно появиться на вечеринке. Однако всю жизнь в этом платье не походишь. Даже если отвлечься от совместимости, сама архитектура AJAX предполагает совершенно иной подход к созданию приложений, иной подход к созданию интерфейсов и, очевидно, годится далеко не для всех задач. Почему "очевидно", скептики объяснить не могут, но добавление в архитектуру приложения "посредника" между пользователем и хранилищем данных накладывает определенные, хотя и не совсем ясные пока ограничения. В любом случае, информация об ограничениях такого рода может быть добыта только методом проб и ошибок. Пройдет немного времени, разорится несколько компаний, канет в Лету десяток веб-проектов - и ограничения AJAX получат более или менее видимые очертания.

Есть и еще одно соображение. Добрый десяток лет веб-интерфейсы развивались в соответствии с установкой на ожидание ответа: каждый разработчик знал, что пользователю, нажавшему на любой элемент управления, придется ждать ответа сервера, и как-то старался уменьшить количество таких запросов, чтобы не заставлять пользователя тратить половину своего времени на ожидание загрузки страницы. С AJAX необходимость в таких реверансах пусть и не исчезла совсем, но актуальность, по большому счету, потеряла. Более того, можно попытаться предположить, какое действие пользователь может сделать дальше - и подгрузить на всякий случай необходимые данные. Все эти предположения практически повторяют анализ Роберта Морриса из IBM, который еще три года назад заявил, что важнейшие инновации в программном обеспечении лежат не в технологиях, а в изменениях пользовательского интерфейса.

С AJAX проблема заключается в том, что писать такие приложения - задача трудоемкая. Нужно написать и отладить на JavaScript движок из десяти или двадцати тысяч строк кода плюс реализовать серверную часть. Причем копировать удачные решения практически не у кого: по большому счету, несколькими действительно масштабными AJAX-проектами может похвастаться только Google, но у них проекты довольно специфические - Google Suggest (сервис, подсказывающий наиболее популярные запросы), Gmail и Google Maps. Наиболее основательной переработке программисты Google подвергли почтовый интерфейс, тогда как Google Suggest и Google Maps удивляют не столько новизной подхода, сколько качеством реализации. AJAX активно используется в проектах студии 37signals: персональном вики Backpack, средстве управления проектами Basecamp и онлайновом списке задач Ta-da list.

Что это было?

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

- Из журнала "Компьютерра"

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.