Шаблоны AJAX в ASP.NET

ОГЛАВЛЕНИЕ

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

Основным принципом AJAX является отправка простых данных на веб-сервер и получение новых простых данных.

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

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

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

Влияние парадигмы AJAX

Частичная визуализация ASP.NET – это искусное добавление поверх классической модели обратной передачи веб-форм. По сути, страница, использующая частичную визуализацию, имеет ту же архитектуру обратной передачи и жизненный цикл, что и страница, не использующая AJAX (см. рис. 1). Далее, разница лежит в перехватчике на стороне клиента, который просто предотвращает действие обозревателя по умолчанию – подачу формы – и заменяет его на ведомый XMLHttpRequest запрос HTTP (см. рис. 2). Этот трюк позволяет пользователю не обновлять страницу полностью, в то же время экономя разработчику время на изучение новой архитектуры и новых шаблонов.

 

Рис. 1 Традиционная операция полной обратной передачи страницы

 

Рис. 2 Частичная визуализация XMLHttpRequest AJAX

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

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

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

Частичная визуализация ограничена одной операцией запроса за раз с целью предохранения единообразий состояния представления – остающегося интегральной частью модели. А это противоречит смыслу первой буквы A в AJAX: асинхронности. При частичной визуализации возможны внешние обратные передачи под управлением JavaScript, но лишь по одной за раз. Если вторая операция запускается до завершения первой, отложенная операция отменяется, чтобы могла выполниться новая. Модель, при которой приоритет отдается последнему, можно программно изменить на модель, где приоритет отдается первому и текущая операция остается активной, тогда как новая проглатывается системой – но от факта возможности не более одной операции за раз никуда не деться.