Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
107
Добавлен:
02.05.2014
Размер:
6.34 Mб
Скачать

54 Часть I. Новый взгляд на Web-приложение

работа будет происходить по тому же сценарию, что и создание обычных программ для настольных систем.

Ajax-приложение должно эффективно взаимодействовать с сервером в процессе работы пользователя. Очевидно, что они являются непосредственными "потомками" классических Web-приложений, но похожи на них не больше, чем современный спортивный велосипед на "лошадь для денди". Лишь помня об этих отличиях, можно создать конкурентоспособное Web-приложение.

1.3. Применение богатых клиентов Ajax

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

1.3.1. Системы, созданные с использованием Ajax

Наибольший вклад в формирование современного представления об Ajaxприложениях внесла компания Google. (Она использовала данную технологию еще до того, как та получила имя Ajax.) Бета-версия службы GMail стала доступна в начале 2004 года. Эта служба привлекла внимание пользователей не только размерами предоставляемого им почтового ящика, но и интерфейсом, который позволял одновременно открывать несколько сообщений и автоматически обновлял список корреспонденции, даже если пользователь подготавливал в это время новое сообщение. Это был существенный шаг вперед по сравнению с обычными почтовыми системами, предлагаемыми большинством провайдеров. Сравнивая GMail с Web-интерфейсами корпоративных почтовых серверов, например Microsoft Outlook и Lotus Notes, нетрудно заметить, что GMail обеспечивает большинство функций, не прибегая к помощи тяжеловесных и ненадежных элементов ActiveX или Java-аплетов. В результате служба доступна не только для корпоративных пользователей, вооруженных специально настроенными машинами, но и для большинства обычных систем.

За GMail последовали другие интерактивные службы, например, Google Suggest, поисковый сервер которой автоматически предлагает завершение фразы, указываемой в составе запроса, и Google Maps — интерактивная масштабируемая карта, посредством которой определяется расположение ресурса. Начали эксперименты с данной технологией и другие компании. В качестве примера можно привести интерактивную систему Flickr, которая в настоящее время является составной частью Yahoo!.

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

Глава 1. Каким должен быть Web-интерфейс 55

рьгх мы поговорим в главе 3, а в приложении В обсудим текущее состояние дел в этой области.

Наличие приложений, созданных на базе Ajax, свидетельствует о том, что новый подход получает признание разработчиков. Если отдельные программисты иногда используют новую технологию лишь для того, чтобы ознакомиться с ней, то такие компании, как Google и Yahoo!, прибегают к ней только в том случае, если она сулит выигрыш в конкурентной борьбе. Мы уже обсуждали преимущества Ajax, которые следуют из теоретических рассуждений. В следующем разделе мы разберем Google Maps и выясним, как теоретические предпосылки реализуются на практике.

1.3.2. Google Maps

Google Maps объединяет в себе черты средств просмотра и поискового сервера. Первоначально данная служба поддерживала только карту США (рис. 1.15), но впоследствии набор доступных регионов был расширен1. Запрос к карте формируется в текстовом формате; допускается детализация до конкретной улицы и даже до таких заведений, как гостиницы или ресторана (рис. 1.16).

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

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

1 В настоящее время уже существует приложение Google Earth, которое охватывает весь земной шар. — Примеч. ред.

56 Часть I. Новый взгляд на Web-приложение

:ile Edit Siew So Bookmarks Iools Help

ф| • '<:ф • $ 4? PjH SL Mtp //maps google com/

j Firefox Help _j Firefox Support . Ping-in FAQ

Maps

-ТГ-Г-— 1 p^

" T -1-

f i t , . J

«

*

Done

Map

) > £ Ш £

Drag the mop with уоиг moose, or double cbck to center.

E x a m p l e s e a r c h e s :

 

Go to a locution

 

 

"kansasoly"

 

trvfr.

"10 market st, san fraadsce*

laaJt

Find e business

 

 

"hotels near

tax*

try it

"рига"

 

try it

Get dh actions

 

 

"jB( to 350 bth. new york. ny" try it

"sertile to 98109"

try it

Take a 0tir »

 

Use our new Satellite feature? Try KavhoU» • Goose's 3D Earth.

Рис. 1.15. На исходной странице Google Maps отображаются масштабируемая карта США и поле ввода ключевых слов, знакомое пользователям поискового сервера Google. Заметьте, что средства масштабирования располагаются в верхней части карты, что позволяет пользователю изменять масштаб, когда карта находится в поле зрения

Карты в Интернете — не новость. Но если мы обратимся к узлу подобного назначения, созданному задолго до появления Ajax, то увидим, что взаимодействие с пользователями реализовано совершенно по другим принципам Карта обычно разделена на фрагменты. Ссылки, управление масштабированием, как правило, расположены за пределами карты либо на обрамлении. После щелчка на одной из таких ссылок обновляется весь экран, в результате чего на той же Web-странице отображаются другие фрагменты карты. Пользователю приходится постоянно отвлекаться от основной задачи. Если он уже имел опыт работы с Google Maps, то, испытав на себе особенности взаимодействия с таким сервером, вряд ли захочет обращаться к нему снова.

Рассмотрим те же задачи с точки зрения программ, расположенных на сервере. Как службы, созданные на базе Ajax, так и службы, созданные оез использования этой инфраструктуры, применяют одинаковые решения. Ь обоих случаях карта представляется как набор простых изображений.

Глава 1. Каким должен быть Web-интерфейс

57

£!e Ed* View So Bookmarks Iools Help

^i т Ц# * mg

 

 

^

c f !

sCl http //maps google com/

Q Firefox Help

Q Firefox Support

U Plug-in FAQ

 

 

 

 

 

Maps

Local Search Directions

 

 

 

 

 

i

'•"'

"

" '

 

 

 

 

 

 

 

p o t e l s

n e a r

 

l a x

M a p s

 

 

 

 

 

 

 

 

 

 

 

C

o

u

r t

y a r d

b y

 

M a r r i o t t :

L

a

x

 

 

 

 

 

 

 

 

 

( 3 1 0 )

 

6 4 9 - 1 4 0 0

 

 

 

 

 

6 1 6 1

W

C e n t u r y

B l v d

 

 

 

L o s

 

A n g e l e s .

C A

9 0 0 4 5

 

 

 

h o t e l p m d c . n a t

 

 

 

 

 

 

 

D i r e c t i o n s : T o

h a r e - P r o m h a r e

 

 

 

 

 

 

 

 

 

 

 

 

 

Map dsta Д2005 NAV1EQ

http jtmaps google com/

•* ©Go О,

Map

Q Pnnt Email m> [ink to this paqa

 

 

 

 

Radisson Lax

 

 

 

 

 

(310) 670 9000 - 0 2 на Е

 

 

 

 

Courtyard by Marriott:

 

 

 

 

T o r r a n c e Plaza

 

 

 

 

 

(310) 533-8000 -0.2 mi E

 

 

 

 

Courtyard bv Marriott: Lax

 

 

 

 

(310)649-1400- 03

m В

 

 

 

 

S h e r a t o n Gateway

 

 

 

 

(310)642-1111 -04 mil

 

 

 

 

Crowne Plaza Los Angeles

 

 

 

 

Airport

 

 

 

 

 

(310) 642-7500-05 ire F

 

 

 

 

Vagabond Inn

 

 

 

 

 

(415) 776-7500- OS nsF

 

 

1 ft

Starwood H o t e l s &

 

 

T

Resorts

 

 

 

{

 

(310) 348-1800 -OVmiE

 

 

 

 

M a n d a r i n Oriental H o t e l

 

 

 

 

G r o u p

 

 

 

 

 

(310) 670-6422 - 0

m F

 

 

^ E m b a s s y Suites

H o t e l

§

 

 

 

 

 

 

Рис. 1.16. Поиск гостиницы с помощью Google Maps. Обратите внимание на традиционное использование технологий DHTML для создания визуальных эффектов и подсказок. Запросы Ajax позволяют сделать процесс поиска более динамичным

Классический Web-сервер по мере прокрутки пользователем карты постоянно обновляет шаблон, в то время как после запуска приложения Google Maps передаются лишь необходимые данные, в частности, изображения, отсутствующие в кэше. (В обоих случаях браузер кэширует изображения, но в классических приложениях содержимое кэша используется лишь для снижения нагрузки на сеть.) Для интерактивных служб, таких как Google, простота использования является основной характеристикой, определяющей, захочет ли пользователь повторно обратиться к ней или предпочтет другой сервер. Другими словами, одним из ключевых показателей является впечатление пользователя от документа. Улучшая интерфейс и придавая ему гибкость, обеспечиваемую Ajax, компания Google заставила своих конкурентов задуматься о качестве их служб. Конечно же, нельзя упускать из виду другие факторы, например качество услуг, но при прочих равных возможностях Ajax может обеспечить существенное преимущество компании, использующей эту технологию.

58 Часть I. Новый взгляд на Web-приложение

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

1.4. Альтернативные технологии

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

1.4.1. Macromedia Flash

Macromedia Flash — система, предназначенная для поддержки интерактивных движущихся изображений. Она использует сжатые данные в формате векторной графики. Изображения Flash могут воспроизводиться в процессе загрузки, что позволяет пользователю просматривать первые фрагменты еще до окончания копирования данных. Данная система предоставляет интерактивные возможности. Для их программирования используется ActionScript — язык, напоминающий JavaScript. Поддерживаются также компоненты, обеспечивающие ввод данных. Технология Flash подходит для самых разных применений — от компьютерных игр до сложных интерфейсов бизнес-приложений. В рамках данной технологии реализованы мощные средства поддержки графики, чем, к сожалению, не могут похвастаться базовые средства Ajax.

Технология Flash известна уже давно и поддерживается посредством встраиваемых модулей. В принципе, полагаться на модули, встраиваемые в клиентскую программу, не следует, однако модули, поддерживающие Flash, входят в комплект поставки большинства браузеров. Данная технология может использоваться на платформах Windows, Mac OS X и Linux, но средства, инсталлируемые в системе Linux, несколько уступают двум другим платформам.

Для создания богатых клиентов на базе Flash могут также использоваться две дополнительные технологии: Macromedia Flex и пакет Laszlo. Обе они реализуют на стороне сервера базовый набор средств, предназначенный для генерации интерфейсов бизнес-приложений, и используют средства J2EE (Java 2 Enterprise Edition). Для динамического управления изображениями Flash на низком уровне предоставляются специальные инструменты, например PHP-модуль libswf.

Глава 1. Каким должен быть Web-интерфейс 59

1.4.2.Java Web Start

Java Web Start — это спецификация, определяющая способ связывания серверных Web-приложений, созданных на базе Java. В результате программа, выполняемая на настольной системе, может находить, копировать и запускать их. Допускается создавать гипертекстовые ссылки, указывающие на эти приложения; такой подход обеспечивает обращение к ним из браузера, поддерживающего Web Start. Средства Web Start включены в состав последних версий Java. В процессе инсталляции продуктов Internet Explorer и Mozilla по умолчанию разрешено использование данной технологии.

Единожды скопированное приложение Web Start хранится в составе файловой системы в так называемой "песочнице" и автоматически обновляется при получении новой версии. Такой подход допускает работу при отсутствии сетевого соединения и снижает объем трафика при повторной загрузке документов. В результате становится возможной работа с приложениями объемом в несколько мегабайт. В приложениях используется цифровая подпись, и пользователь может решать, предоставлять ли им доступ к файловой системе, сетевым портам или к другим ресурсам.

Традиционно для создания интерфейса приложений Web Start используются средства Java Swing. Средствами Web Start могут доставляться компоненты SWT (Standard Widget Toolkit), используемые в составе Eclipse, но чтобы добиться этого на практике, надо затратить дополнительные усилия.

На платформе .NET реализованы средства аналогичного назначения — No Touch Deployment. Они также обеспечивают простоту доставки, богатый пользовательский интерфейс и защиту.

Основной недостаток обеих технологий — потребность в заранее установленной исполняющей системе. Очевидно, что исполняющая система необходима для любого богатого клиента, но Flash и Ajax используют для этой цели общепринятые программные средства. (Для Ajax исполняющей системой является сам браузер.) Системы Java и .NET имеются не на всех машинах, поэтому в настоящее время при реализации Web-служб, ориентированных на массовое применение, на них нельзя полагаться.

1.5. Резюме

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

60 Часть I. Новый взгляд на Web-приложение

Системы клиент/сервер и n-связные архитектуры необходимы для взаимодействующих программ или для приложений, координируемых из единого центра, но для них неизбежна задержка, связанная с передачей по сети, что снижает производительность работы пользователя. Предпринимаются попытки решить проблему задержки путем асинхронной удаленной обработки событий, но, несмотря на это, необходимо признать, что модель "запросответ", типичная для традиционных Web-приложений, в принципе не может обеспечить высокую производительность.

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

Браузер имеет дело с приложением, а не с содержимым.

Сервер доставляет данные, а не содержимое.

Пользователь постоянно взаимодействует с приложением, и большинство запросов к серверу формируется без его участия.

Код имеет большой объем, кроме того, он сложен и структурирован. Код играет главную роль в нашей архитектуре, поэтому ему надо уделять основное внимание.

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

1.6. Ресурсы

Для того чтобы лучше понять вопросы, затронутые в данной главе, надо обратиться к перечисленным ниже источникам.

Впервые инфраструктура Ajax была упомянута 18 февраля 2005 г. в статье Джесса Джеймса Гарретта, которая доступна по адресу h t t p : / / www.adaptivepath.com/publications/essays/archives/000385.php.

Рассуждения Алане. Купера о независимых и переходных приложениях можно найти в следующем документе: http://www.cooper.com/articles/ art_your_programs_posture.htm.

Глава 1. Каким должен быть Web-интерфейс 61

Служба Google Maps доступна по следующим адресам. Для жителей США: http://maps.google.com

Для жителей Соединенного Королевства: http://maps.google.co.uk Для тех, кто живет на Луне: h t t p : / /moon. google. com2

Изображения велосипеда получены с Web-узла Pedaling History, расположенного по адресу http://www.pedalinghistory.com.

Приложение Google Earth можно найти на сайте http://earth.google.com/. — Примеч. ред.

Знакомство с

Вэтой главе ...

Технологии, лежащие в основе Ajax

Использование каскадных таблиц стилей для формирования внешнего вида документа

Использование Document Object Model

для определения структуры пользовательского интерфейса

Асинхронное взаимодействие с сервером посредством XMLHttpRequest

Совместное использование базовых технологий

врамках инфраструктуры Ajax

64Часть I. Новый взгляд на Web-приложение

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

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

Эту главу можно рассматривать как вводную, подобно разделам других книг, в который обсуждается приложение "Hello, World!". Основная наша цель — добиться того, чтобы рассматриваемые примеры были работоспособны. Подробное обсуждение материала мы начнем в главе 3. Если вы уже знакомы с некоторыми технологиями, составляющими Ajax, то можете пропустить соответствующие разделы. Если же вы еще ничего не знаете об Ajax и не имеете опыта в программировании клиентских Web-программ, то вводный материал позволит вам лучше ориентироваться в остальной части книги.

2.1. Основные элементы Ajax

Ajax — не одна конкретная технология, скорее это совокупность четырех технологий, дополняющих друг друга (табл. 2.1).

В главе 1 было показано, как сложные Ajax-приложения доставляются пользователям и как пользователи взаимодействуют с ними. Это достигается за счет использования JavaScript-кода, который "объединяет" приложение, определяет последовательность действий пользователя и бизнес-логику программы. Действия с интерфейсом преобразуются в операции с элементами DOM (Document Object Model), с помощью которых обрабатываются данные, доступные пользователю, в результате чего представление их изменяется. Здесь же производится обработка перемещений и щелчков мышью, а также нажатий клавиш. Каскадные таблицы стилей, или CSS (Cascading Style Sheets), обеспечивают согласованный внешний вид элементов приложения и упрощают обращение к DOM-объектам. Объект XMLHttpRequest (или подобные механизмы) используется для асинхронного взаимодействия с сервером, обработки запросов пользователя и загрузки в процессе работы необходимых данных. Эти технологии и их взаимосвязь в рамках Ajax показаны на рис. 2.1.

Три из этих четырех технологий — CSS, DOM и JavaScript — составляют DHTML (Dynamic HTML). Следует заметить, что средства DHTML, появившиеся в 1997 году, подавали большие надежды, но так и не оправдали их. DHTML позволяет создавать на базе Web-страниц интерфейсы с достаточно большими интерактивными возможностями, но любые изменения внешнего вида страницы реализуются лишь путем повторной загрузки всего документа. Набор действий, которые можно выполнить без обращения к серверу, весьма ограничен. Средства DHTML интенсивно используются в Ajax, но благодаря асинхронным запросам можно получить результаты, которые невозможно получить с помощью обычных Web-страниц.