WEB-РАЗРАБОТКА
Андрей Колесов
Если говорить о ключевых направлениях создания ПО, то, безусловно, Web-разработка - это как раз та самая тема, которая несколько последних лет характеризуется словами “горячо, горячо, еще горячее...”. Исторически понятию “Web-приложение” немногим более десяти лет (хотя сам этот термин стал широко применяться лишь 5-6 лет назад), в его основе лежит идея формирования динамических HTML-страниц, исполняемых в среде Web-браузера на клиентском компьютере. Ключевым импульсом для практической реализации этой идеи стало появление в 1995 г. технологии Java. Правда, тут нужно отметить, что Java, изначально ориентированная на создание аплетов, довольно быстро переместилась в серверную часть, а на клиентских компьютерах для поддержки динамики (или, как часто говорили в середине 90-х годов, активизации) HTML стали доминировать скриптовые языки.
На рубеже веков разработка прикладного ПО разделилась на два направления: создание классических настольных приложений и Web-приложений. Но, несмотря на рост, популярности Web казалось, что “новички” никогда не смогут догнать “классиков” по насыщенности функционала, гибкости и производительности. Однако сейчас, похоже, наступил тот момент, когда этот разрыв будет преодолен. В качестве примера посмотрите на реализацию широко известного проекта “Географические карты Google” (Google Maps, maps.google.com). Выполните несколько основных операций: измените масштаб карты, сместите изображение, прокрутите его. Все это делается достаточно быстро, без заметных затрат на перезагрузку Web-страниц.
Google Maps - это пример новых возможностей создания Web-приложений с помощью технологии AJAX - Asynchronous JavaScript + XML. Этот термин стал широко использоваться примерно с начала 2005 г. Сейчас, кратко характеризуя итоги первого года “жизни” AJAX, можно констатировать растущий интерес к нему со стороны ведущих поставщиков средств разработки и прогнозировать перспективу традиционной для современного ИТ-мира борьбы вокруг стандартов для этой технологии.
Асинхронная программная модель
AJAX не содержит каких-то принципиально новых средств, ее главное новшество - увязка воедино нескольких хорошо известных технологий:
- презентационный уровень, основанный на стандартах XHTML и Cascading Style Sheets (CSS);
- динамический интерактивный пользовательский интерфейс с применением Document Object Model (DOM);
- преобразование данных с помощью XML и XSLT;
- асинхронный доступ к данным с применением XMLHttpRequest;
- связывание всего этого на базе JavaScript.
Таким образом, полная “формула” AJAX должна выглядеть как “HTTP + XML + HTML + XMLHttpRequest + JavaScript + CSS”.
Классическая модель построения Web-приложения выглядит следующим образом. Пользователь выполняет какие-то действия на клиентской машине, в результате на Web-сервер отправляется HTTP-запрос. Сервер производит нужные операции - получает данные из БД, связывается с другими системами, выполняет некую обработку информации и пр. - и возвращает новую сформированную HTML-страницу на клиентский компьютер. Все это работает в рамках традиционной модели гипертекстовой Web-среды, но такая схема не всегда хороша для создания прикладных программных решений. Фактически пользователь лишен возможности выполнять какие-либо действия во время обращения к серверу, при том что интерфейс уже загружен.
Главная идея AJAX - исключить старт-стопный режим взаимодействия в Web с помощью введения специального промежуточного слоя - механизма AJAX (рис. 1). Вместо Web-страницы браузер загружает написанный на JavaScript специальный движок AJAX, который отвечает как за перерисовку внешнего визуального интерфейса, так и за связь с сервером. Такой промежуточный слой позволяет управлять взаимодействием с пользователем асинхронно, независимо от обмена данными с сервером (рис. 2). Теперь каждое действие человека вместо отправки HTTP-запроса на сервер формирует JavaScript-вызов к AJAX-движку, который сам управляет интерфейсными операциями, не требующими обращения к серверу.
Рис. 1. Традиционная и AJAX-модели для создания Web-приложений
Решающая роль в реализации такой логики работы принадлежит объекту XMLHttpRequest, который позволяет на JavaScript выполнять HTTP-запросы к удаленному серверу без перезагрузки HTML-страниц. Впервые этот объект был предложен корпорацией Microsoft в виде ActiveX-компонента, но сейчас он уже выполнен на уровне внутреннего объекта в наиболее популярных браузерах (в том числе Mozilla и Apple Safari).
Рис. 2. Модель работы традиционного (сверху) и AJAX Web-приложений
С точки зрения пользователя, логику применения AJAX можно проиллюстрировать на примере проекта Virtual Earth (local.live.com) корпорации Microsoft (рис. 3). При работе с медленным интернет-каналом (по телефонному модему) видно, что карта состоит из отдельных фрагментов. При этом сначала программа закачивает те куски, которые должны выводиться на экран в первую очередь, а потом начинает загружать в фоновом режиме и окружающие области. Таким образом система заранее готовится к возможным действиям пользователя, например смещению кадра карты в любом направлении.
Рис. 3. Промежуточный скриншот экрана проекта Microsoft Virtual Earth показывает
логику применения AJAX с точки зрения пользователя
“Стандартная" проблема
Позитивная идея AJAX в целом достаточно очевидна, но проблема дальнейшего развития этой технологии традиционна для мира Web: требуется выработка стандартов, которые сделали бы AJAX на деле платформенно-независимой.
Первый подводный камень - это JavaScript. Хотя в его названии есть “Java”, нужно иметь в виду, что этот скриптовый язык в общем-то не имеет никакого отношения к Java Platform и напоминает Java-язык только синтаксисом (в свое время он был разработан компанией Netscape для исполнения в среде браузера Netscape Navigator и первоначально имел название LiveScript). JavaScript является явным лидером среди скриптовых Web-языков, но все же, несмотря на рекомендации комитета W3C, производители браузеров постоянно идут на отклонение от имеющихся стандартов. То же самое можно сказать и в отношении XMLHttpRequest: разные браузеры используют различные методы реализации этого объекта.
Само появление AJAX было связано с работой компании Google (www.google.com) над Web-проектами Google Groups, Google Suggest и Google Maps. Этот ведущий игрок на рынке интернет-услуг приложил значительные усилия для реализации данной технологии и на практике показал возможности ее применения. Но в результате этих успехов, которые развили и другие поставщики Web-услуг (в том числе, например, Amazon), перспективными методами Web-разработки заинтересовались профессиональные поставщики платформенного ПО и средств разработки и встал вопрос о необходимости стандартизации AJAX.
И как ни парадоксально это выглядит, но лучшим показателем жизнеспособности и перспективности AJAX является тот факт, что в этой сфере мы можем наблюдать нарастание борьбы между двумя основными противоборствующими группировками софтверных технологий: Open Source & Java и Microsoft .NET.
1 февраля группа ведущих ИТ-компаний (BEA Systems, Borland, Dojo Foundation, Eclipse Foundation, Google, IBM, Laszlo Systems, Mozilla, Novell, Openwave Systems, Oracle, Red Hat, Yahoo, Zend и Zimbra) объявила о новой индустриальной инициативе Open AJAX, которая преследует цель поддержки данной технологии на принципах открытых стандартов. Судя по всему, лидером этой коалиции является корпорация IBM, которая ранее сообщила об использовании технологий AJAX в своих продуктах Lotus, WebSphere и Rational, а в январе 2006 г. анонсировала начало нового проекта AJAX Toolkit Framework. Он будет выполняться на принципах Open Source в рамках концепции Eclipse и предполагает создание интегрированной среды разработки AJAX-приложений (включая инструменты отладки и развертывания ПО), поддерживающей AJAX-движки от различных поставщиков (в том числе Dojo и Zimbra). Планируется, что ATF сможет поддерживать самый широкий круг Web-браузеров, но особая фокусировка будет сделана на Mozilla, предлагающем наиболее широкие кросс-платформенные возможности.
Отметим, что за несколько недель до сообщения об Open AJAX фонд Apache Software объявил о реализации собственного набора Kabuki AJAX Toolkit Project. Как известно, Sun Mycrosystems держится в стороне от проекта Eclipse, но она еще прошлой осенью сообщила о намерении реализовать поддержку AJAX в своих средствах разработки, в том числе Java Studio Creator. В качестве еще одного примера из стана Open Source можно сказать о недавнем выпуске инструмента Exadel Studio Pro 3.5 с поддержкой AJAX на базе Java и Eclipse.
Разумеется, в стороне от AJAX не могла остаться и Microsoft. В июне 2005 г. корпорация объявила о создании базовой среды разработки и исполнения клиентских AJAX-приложений (она получила кодовое название Atlas), интегрированной с Visual Studio 2005 и ASP.NET 2.0. И уже в сентябре на конференции PDC’2005 представила прототип этого инструмента. В декабре компания выпустила версию Community Technology Preview, которая широко обсуждалась на проходившей в последних числах января (совпадение с анонсом Open AJAX вряд ли случайно) в Сан-Франциско конференции VSLive! Примечательно, что свои AJAX-решения, в виде модулей расширения Visual Studio 2005, там же представили по меньшей мере еще три компании - Infragistics, FarPoint Technologies и Syncfusion.
Выполнение проекта Atlas корпорация Microsoft рассматривает в качестве составной части собственной инициативы Smart Client. Однако, хотя представители компании всегда подчеркивают стремление обеспечить поддержку самого широкого круга платформ и устройств, с большой вероятностью можно предположить, что, как обычно, особое предпочтение будет отдано Internet Explorer. Так или иначе, но технология AJAX объявлена одним из ключевых направлений развития ASP.NET и уже нашла применение в ряде проектов Microsoft, в частности Outlook Web Access и Virtual Earth.