Шаблоны AJAX в ASP.NET - Краткий обзор шаблонов AJAX

ОГЛАВЛЕНИЕ

Краткий обзор шаблонов AJAX

Следующий этап эволюции веб-приложений ведет напрямую к AJAX и, говоря в общем, к функционально насыщенным приложениям Интернета (RIA). На переднем фронте этой эволюции находятся три категории приложений: классические веб-узлы на основе HTML, гибридные приложения, созданные для интеграции нескольких систем в один веб-интерфейс пользователя, и «толстые» клиенты.

Для первой категории частичная загрузка интерфейса пользователя (частичная визуализация) представляет собой легкий способ применения AJAX с минимальным воздействием на существующий код и навыки.

Концепция гибридности, с другой стороны, не обязательно пригодна для AJAX и улучшенного взаимодействия с пользователями. Это просто способ сбора данных с широкого набора источников и совмещения их в единообразном и цельном интерфейсе пользователя. Это также может произойти в классическом варианте «от сервера к серверу». Однако AJAX делает это проще и, честно говоря, лучше. С точки зрения AJAX, гибридному приложению нужны стандартные форматы сериализации данных (сведения), облегченная платформа для вызова удаленных служб через сценарий, обновляемая модель DOM, и, возможно, несколько функционально насыщенных визуальных элементов управления с удобной моделью программирования.

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

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

Для создания кода в модели SPI необходим новый набор шаблонов разработки. На рис. 4 перечислены некоторые из наиболее популярных шаблонов AJAX. Как можно заметить, в большинстве из них основное внимание уделено приемам и расположению интерфейса пользователя, хотя стоит сказать, что в список не входят некоторые популярные шаблоны и практические рекомендации по AJAX, которые уже реализованы в клиентской библиотеке Microsoft® AJAX. Например, уже нет нужды в создании заглушки AJAX, независимой от обозревателя модели JavaScript или модели отслеживания вызовов, – если используется AJAX для ASP.NET, то все эти функции доступны изначально.

Рис. 4 Некоторые шаблоны AJAX

ШаблонЦель
Создание шаблонов на стороне обозревателяЭтот шаблон предлагает использовать шаблоны HTML, которые будут динамически дополнены данными, полученными с удаленных конечных точек HTTP. Вместо восстановления компоновки HTML для данных на лету и для каждого запроса шаблон предлагает установить собственный уровень шаблонов. Он представляет собой альтернативу шаблону сообщения HTML.
Междоменный проксиЭтот шаблон управляет подключением «от сервера к серверу» к достижимой и представленной на общее пользование службе, принося данные обратно на клиент. Приложению AJAX не позволено подключаться к URL-адресам за пределами домена страницы из обозревателя клиента. Однако локальный прокси, расположенный в том же домене, может легко взять данные откуда угодно и перенести их обратно вызвавшей стороне.
Периодический сигналПоскольку большинство приложений AJAX могут выполнять массу работы на клиенте без единой обратной передачи, может возникнуть необходимость уведомления сервера в том, что конкретный клиент еще активен. Шаблон предполагает, что клиентское приложение регулярно отправляет сообщение периодического сигнала, чтобы показать, что оно все еще загружено и работает на обозревателе.
Сообщение HTMLУдаленные конечные точки HTTP обычно возвращают данные в формате JavaScript Object Notation (JSON) на клиент для интеграции в существующий DOM. Эту задачу можно выполнить только через JavaScript. Однако если клиентский код особенно сложен или нужно улучшить производительность, может потребоваться возвратить с сервера код HTML (данные и компоновку) вместо простых данных.
МикроссылкаAJAX в основном используется для выполнения большого числа действий внутри одной страницы. Как можно сослаться на внешнее содержимое, а именно на содержимое, которое отправилось бы на другую страницу в классическом веб-приложении? Нужна своего рода внутристраничная гиперссылка, или микроссылка. Микроссылка – это ссылка на кусок разметки, который извлекается через вызовы сервера и затем вставляется в страницу. Микроссылка может быть конечной точкой HTTP, или, возможно, методом на командном объекте JavaScript.
JavaScript по запросу Это аналог популярного «ленивого» шаблона загрузки (часто использовавшегося в уровне доступа к данным) в JavaScript. Загрузка всего требуемого кода JavaScript в ходе инициализации страницы может негативно повлиять на производительность и замедлить весь процесс. Посредством загрузки кода JavaScript лишь по запросу страницам дается гораздо меньшее время загрузки без ущерба для производительности.
Компоновка страницыПоскольку большинство из действий приложения происходят на одной странице, содержимое этой страницы необходимо обновлять, представляя новую информацию как изменения контекста. Этот шаблон просто предлагает использовать модель DOM для добавления/удаления или показа/сокрытия элементов, чтобы отразить изменения состояния.
Периодическое обновлениеОбозреватель периодически планирует запрос для получения новой и самой последней информации для обновления интерфейса пользователя.
Всплывающее окноЭтот шаблон представляет собой веб-версию модальных/немодальных диалоговых окон Windows. Всплывающее окно состоит из содержимого HTML, отображаемого перед существующим содержимым в течении относительно короткого периода времени, или пока пользователь не закрывает его.
Предсказывающее получениеЭтот шаблон предлагает прогноз наиболее вероятных действий пользователя и получение необходимых данных заранее. Применение этого шаблона имеет свою цену: по сути это предположение и оно может быть неправильным. Эффективный при увеличении видимой производительности, этот шаблон может также привести к понижению производительности при неумелом применении или применении в неподходящей ситуации из-за серьезного потребления пропускной способности сервера.
Индикатор выполненияЭтот шаблон применяется для отслеживания выполнения операций сервера. Идея заключается в том, что операция сервера записывает ход собственного выполнения в общем местоположении, откуда служба наблюдения клиента может считать его в контексте обновления процента выполнения.
Ограничение передачиОдним из потенциальных недостатков AJAX является возможность отправки серверу слишком многих запросов на единицу времени. Это является очевидным признаком проблемы масштабирования. Данный шаблон предлагает установить таймер для периодической загрузки данных на сервер, а также локальный кэш или очередь для сбора запросов.
Время ожиданияВ случае выполнения с клиента ресурсоемких операций, таких как потоковая передача или периодическое обновление, возникает проблема обеспечения реального использования приложения каждым подключенным клиентом. Данный шаблон предполагает, что необходимо установить время ожидания, по истечении которого ресурсоемкие операции прекращаются и возобновляются лишь по прямому запросу клиента.
Уникальные URL-адресаЭтот шаблон позволяет назначать отдельные URL-адреса различным частям приложения, которые обычно отражают различные состояния. Этот шаблон часто используется для поддержки журнала в приложениях AJAX.
Виртуальная рабочая областьСерверу нужно отвечать на запросы настолько быстро, насколько возможно, но он не обязательно может возвратить все доступные данные по соображениям пропускной способности. Данный шаблон предлагает создать виртуальный интерфейс пользователя, передающий идею, что все данные доступны, тогда как только небольшая их часть реально находится на клиенте. Загрузка данных по требованию и их локальное кэширование являются обязанностями приложения.

Следует также заметить, что шаблоны, перечисленные на рис. 4, и шаблоны AJAX в целом являются скорее справочными шаблонами, чем шаблонами разработки. Они указывают распространенные способы работы, но не все из них соответствуют проблемам разработки.

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