Технология ASP.NET AJAX

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

Разработчикам веб-приложений удается обходить подобные ограничения за счет применения языка JavaScript, который является пока что единственным широко поддерживаемым языком для написания клиентских сценариев. В ASP.NET во многих наиболее мощных элементах управления присутствует приличный объем кода JavaScript. Например, элемент управления Menu немедленно реагирует на наведение пользователем курсора мыши на различные подзаголовки. При его использовании страница не производит обратную отправку серверу до тех пор, пока пользователь не щелкнет на каком-то элементе.

Разработчики используют серверные элементы управления вроде Menu внутри традиционных страниц ASP.NET и получают преимущества, которые предоставляют встроенные в элементы клиентские сценарии. Но даже в случае применения таких более совершенных элементов управления обратная отправка данных серверу все равно неизбежна. Например, если необходимо обновить информацию в какой-то части страницы, единственно возможным вариантом в случае обычной страницы ASP.NET является обратная отправка этой страницы серверу и получение совершенно нового HTML- документа. Такое решение работает, но далеко от идеала.

Поэтому разработчики начали пытаться решить эти проблемы за счет использования дополнительного клиентского кода и его применения более совершенными способами. Одним из наиболее обсуждаемых на сегодняшний день примеров является технология программирования клиентской стороны под названием Ajax (Asynchronous JavaScript and XML — асинхронный JavaScript и XML). Ajax позволяет странице связываться с сервером и обновлять содержимое без полной обратной отправки. Обычно в странице Ajax используется код клиентского сценария для выполнения асинхронного запроса “за кулисами”. Сервер получает этот запрос, выполняет некоторый код и затем возвращает необходимые странице данные (зачастую в виде блока XML-разметки). После этого клиентский код получает новые данные и использует их для выполнения еще какого-то действия, например, для обновления части страницы. Хотя концептуально Ajax является довольно простой технологией, она позволяет создавать страницы, которые функционирует очень похоже на непрерывно выполняющиеся приложения.

На рис. 1.3 показано, чем страницы Ajax отличаются от обычных веб-страниц.

 

Рис. 1.3. Обычные серверные страницы и страницы Ajax

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

Internet Explorer 5 и последующие версии;

Netscape 7 и последующие версии;

Opera 7.6 и последующие версии;

Safari 1.2 и последующие версии;

Firefox (все версии);

Google Chrome (все версии).

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

На заметку! По общепринятому соглашению, слово “Ajax” заглавными буквами не пишется, потому что акронимом не является. Тем не менее, в Microsoft решили использовать в ASP.NET AJAX заглавные буквы. Именно поэтому в книге будут встречаться два варианта написания этого слова: Ajax при обсуждении технологии и философии Ajax в общем и AJAX для ссылки на технологию ASP.NET AJAX, которая является реализацией Ajax от Microsoft.