ASP.NET AJAX

157

ASP.NET AJAX состоит из двух основных частей: клиентской и серверной.

Клиентская часть - это набор библиотек JavaScript. Эти библиотеки никак не привязаны к ASP.NET - фактически разработчики, не использующие ASP.NET, могут применять их на своих веб-страницах. Клиентские библиотеки предоставляют не очень много готовых средств (например, не существует никаких предварительно созданных функциональных блоков, которые можно было бы помещать внутрь веб-страниц). Вместо этого они закладывают фундамент, который можно использовать для разработки страниц в стиле ASP.NET AJAX.

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

Серверная часть ASP.NET AJAX работает на более высоком уровне. Она включает в себе элементы управления и компоненты, которые используют клиентские библиотеки JavaScript. Например, веб-форма, содержащая компонент DragPanel (из ASP.NET AJAX Control Toolkit), предоставляет пользователям возможность перетаскивать панель в окне браузера. "За кулисами" действует некий специальный код JavaScript, который использует клиентские библиотеки ASP.NET AJAX. Тем не менее, элемент управления DragPanel визуализирует весь необходимый ему код JavaScript, избавляя от необходимости писать его вручную.

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

ASP.NET AJAX на стороне клиента: библиотеки сценариев

Клиентская часть ASP.NET AJAX полагается на небольшую коллекцию файлов JavaScript. Существуют два способа развертывания файлов сценариев ASP.NET AJAX. Если строится приложение ASP.NET 4, они доступны в сборке System.Web.Extensions.dll и предоставляются по требованию. В случае создания приложения, отличного от ASP.NET, или добавления клиентских функций в обычную HTML-страницу, файлы JavaScript можно загрузить отдельно из веб-сайта ASP.NET AJAX как часть библиотеки Microsoft AJAX Library.

Библиотеку Microsoft AJAX Library стоит также загрузить, если необходимо подробнее ознакомиться с фактическим кодом JavaScript. Этот загружаемый комплект включает отладочные версии каждого из трех базовых файлов, а также финальные производственные версии. В целях максимального уменьшения размеров файлов из производственных версий удалены все пробелы и комментарии. Для сравнения: самым большим файлом является MicrosoftAjах.js. Его отладочная версия имеет объем чуть меньше 300 Кбайт, а производственная версия требует приблизительно 90 Кбайт.

Загрузив библиотеку Microsoft AJAX, несложно убедиться, что ASP NET AJAX использует только три базовых файла JavaScript - MicrosoftAjax.js, MicrosoftAjaxWebForms.js и MicrosoftAjaxTimer.js. Наряду с этими основными файлами существует свыше сотни очень маленьких файлов JavaScript, в которых хранится информация глобализации (например, форматы данных, применяемые для различных культур).

В ASP.NET вы не найдете отдельных файлов JavaScript для клиентских библиотек. Вместо этого клиентские библиотеки встроены в сборку System.Web.Extensions.dll и предоставляются в качестве ресурса сценария. Ресурсы сценариев позволяют отобразить URL-адрес на ресурс, встроенный в сборку. Например, вот как выглядит блок сценария, который извлекает библиотеку сценария ASP.NET AJAX:

<script src="/sites/ScriptResource.axd?d=P98W4EwF1Z4..." 
   type="text/javascript"></script>

Платформа ASP.NET включает обработчик ресурса сценария, который отвечает на эти запросы. Он анализирует переданный аргумент строки запроса и возвращает запрошенный файл сценария.

ASP.NET AJAX на сервере: элемент управления ScriptManager

Понятно, что вводить длинные URL-адреса, указывающие на ресурсы сценария, на каждой странице, которая использует ASP.NET AJAX, нежелательно. Возможным решением этой проблемы является применение элемента управление ASP.NET по имени ScriptManager.

Элемент ScriptManager является "мозговым центром" серверной части модели ASP.NET AJAX. Этот веб-элемент управления не имеет никакого визуального представления на странице. Однако он решает ключевую задачу - визуализирует ссылки на JavaScript-библиотеки ASP.NET AJAX.

Чтобы добавить ScriptManager в страницу, его можно перетащить из вкладки AJAX Extensions (Расширения AJAX) панели инструментов Toolbox. Объявление элемента управления ScriptManager в файле .aspx выглядит следующим образом:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

Каждая страница, которая использует функции ASP.NET AJAX, требует наличия экземпляра ScriptManager. Внутри страницы допустимо иметь только один элемент управления ScriptManager.

Наряду с визуализацией ссылок на клиентские библиотеки ASP.NET AJAX элемент ScriptManager выполняет также несколько других важных задач. Он может визуализировать ссылки на другие файлы сценария (часто по запросу других элементов управления и компонентов, поддерживающих ASP.NET AJAX), создавать прокси-объекты, которые позволяют вызывать веб-службы асинхронно из браузера, и управлять способом, которым элементы управления UpdatePanel обновляют свое содержимое.

Если функции ASP.NET AJAX используются во всем веб-сайте, имеет смысл поместить элемент ScriptManager в мастер-страницу. Однако иногда это может приводить к проблемам, поскольку различные страницы содержимого могут пытаться сконфигурировать свойства ScriptManager по-разному (например, добавляя новые сценарии и ссылки веб-служб). В такой ситуации решение заключается в использовании элемента управления ScriptManager в мастер-странице и элемента управления ScriptManagerProxy в странице содержимого. Каждая страница содержимого может конфигурировать элемент управления ScriptManagerProxy так же, как она конфигурировала бы элемент управления ScriptManager.

После ознакомления с основными компонентами модели ASP.NET AJAX - клиентскими библиотеками и серверным элементом управления ScriptManager - можно приступать к созданию страниц, которые используют функции ASP.NET AJAX. Мы начнем с применения ASP.NET AJAX в качестве альтернативы технологии клиентского обратного вызова для получения информации с сервера. Затем будет показано, как использовать элементы управления, поддерживающие ASP.NET AJAX, для получения разнообразных эффектов стиле Ajax (таких как перетаскивание и автозавершение) при небольших дополнительных усилиях. И, наконец, мы подробнее опишем клиентские библиотеки ASP.NET AJAX, которые поддерживают эти функции, и покажем, как строить собственный компонент ASP.NET AJAX.

Пройди тесты
Лучший чат для C# программистов