Оглавление Благодарности ...................................................................... 16 Введение ............................................................................. 17 Для кого написана эта книга? ..................................................................................... 17 Часть I (Насущная) Перелицовка застарелой технологии Web ....... 19 Глава 1. Под защитой AJAX ..................................................................... 20 Какой Web нам нужен? .................................................................................................. 21 Все ради впечатления пользователя...................................................................... 21 Впечатление пользователя для «чайников»....................................................... 22 Впечатление пользователя для пользователей с медленным соединением по сети................................................................... 23 Впечатление пользователя для разработчиков.................................................. 24 Пользовательский интерфейс для менеджеров................................................. 25 Основные принципы Web.......................................................................................... 26 Рождение Web................................................................................................................ 26 Принцип работы Web ................................................................................................ 27 Изначальное предназначение HTML и HTTP ................................................ 27 Парадокс Web ............................................................................................................... 28 Старый, прочный фундамент, на котором основан Web................................ 28 Фундамент заменить нельзя..................................................................................... 29 Главное преимущество AJAX ...................................................................................... 30 Чем на самом деле является AJAX?...................................................................... 31 Новая концепция веб-программирования........................................................... 31 Объект XMLHttpRequest ......................................................................................... 32 Объектная модель документов................................................................................ 33 Изменение концепции................................................................................................. 33 Модель «страницы с формами».............................................................................. 34 Модель «данные для данных».................................................................................. 34 Рефакторинг AJAX: элементы, веб-страницы и приложения...................... 36 AJAX и новые веб-проекты ........................................................................................... 37 Внедрение возможностей AJAX ............................................................................. 37 Выборочные обновления..............................................................................................38 Затраты и выгоды...........................................................................................................38 Архитектура — важный вопрос............................................................................... 39 Некоторые общие вопросы архитектуры...............................................................39 Два уровня и формат данных.....................................................................................40 Оглавление 7 JSON как облегченная альтернатива XML......................................................... 41 Затраты и выгоды......................................................................................................... 42 RIA, «богатые» интернет-приложения.................................................................. 43 Доступность против «богатства» приложений.................................................. 43 Приложение RIA обладает более функциональным HTML........................ 44 Приложение RIA обладает более функциональным JavaScript.................. 45 Выводы ................................................................................................................................. 45 Глава 2. Легкий подход к AJAX ................................................................ 47 Инфраструктура ASP.NET AJAX ................................................................................ 48 Менеджер скриптов страницы................................................................................. 48 Элемент управления ScriptManager........................................................................49 Оптимизация частичной отрисовки страниц.......................................................50 Те же скрипты, но обработанные лучше................................................................51 Те же сценарии, но используемые глобально......................................................53 Добавление сервисных ссылок на страницы........................................................54 Определение точек истории в пределах страниц...............................................54 Библиотека Microsoft JavaScript............................................................................. 56 JavaScript с более богатой функциональностью.................................................57 Плюсы и минусы языка JavaScript .........................................................................58 Добавление объектной ориентации в JavaScript ...............................................59 Частичная отрисовка страниц ..................................................................................... 60 Элемент управления UpdatePanel.......................................................................... 60 Причины для использования частичной отрисовки страниц........................60 Беглый взгляд на синтаксис.......................................................................................61 Механизм частичной отрисовки страниц..............................................................63 Механизм частичной отрисовки страниц в серверной части........................64 Роль просмотра состояния..........................................................................................65 Плавное обновление страницы..................................................................................66 Программирование обновляемых панелей.......................................................... 67 Условные обновления....................................................................................................67 Управление программными обновлениями..........................................................69 Динамические шаблоны...............................................................................................70 Дополнительные возможности..................................................................................71 Сведение к минимуму передачи данных............................................................. 71 Золотые правила по размещению элементов управления UpdatePanel.................................................................................................................72 Снижение размеров страниц для операции частичной отрисовки..............72 Свет и тени частичной отрисовки.......................................................................... 73 Обратная связь с пользователем...............................................................................75 Отключение визуальных элементов в процессе обновлений........................77 Проблемы с одновременными вызовами...............................................................78 Проблемы с опросами...................................................................................................79 8 Оглавление AJAX и JavaScript-вставки ............................................................................................ 79 Удаленные методы........................................................................................................ 80 Методы страниц..............................................................................................................80 Активация страничных методов................................................................................81 Сравнение страничных методов и сервисов.........................................................83 Виджеты и эффекты.................................................................................................... 83 AJAX Control Toolkit......................................................................................................83 Библиотека jQuery ........................................................................................................86 Резюме .................................................................................................................................. 87 Глава 3. Архитектура AJAX ...................................................................... 89 Схема сервисного уровня AJAX .................................................................................. 90 Обзор архитектуры....................................................................................................... 90 HTTP-представление.....................................................................................................91 HTTP-представление и схема сервисного уровня.............................................92 Технологии HTTP-представления............................................................................94 Передача данных и формат данных.........................................................................96 Почему JSON более предпочтителен, чем XML.................................................97 HTML-уровень представления..................................................................................98 Взгляд изнутри на HTTP-представление..........................................................100 Анализ HTTP-запросов............................................................................................. 100 WCF-сервисы................................................................................................................. 101 Веб-сервисы ASP.NET................................................................................................ 106 Пользовательские сервисы....................................................................................... 109 Платформа ADO.NET Data Services.................................................................... 110 Уровень представления AJAX ...............................................................................111 Получение прокси для HTTP-представления.................................................. 111 Использование прокси............................................................................................... 112 JavaScript-шаблон «Модель-контроллер».......................................................... 114 Вопросы безопасности...............................................................................................115 HTTP-представление — это не средний уровень вашего приложения.............................................................................................. 116 Встроенные контрмеры безопасности.................................................................. 117 Replay-атаки................................................................................................................... 118 Оградиться от посторонних..................................................................................... 118 Обеспечение доверительности HTTP-представлению.................................. 120 Шаблон AJAX Server Pages ........................................................................................ 121 Обзор архитектуры.....................................................................................................122 Классические элементы управления ASP.NET................................................. 122 Увеличение числа JavaScript-вставок на странице......................................... 123 Фоновый код и сервисный уровень..................................................................... 125 Еще одна реализация классической модели постбэков...............................125 Это тот же постбэк...................................................................................................... 125 Более интеллектуальная форма частичной отрисовки................................. 126 Библиотеки в действии.............................................................................................127 RadControls для ASP.NET AJAX от компании Telerik................................... 128 Gaia AJAX от компании Gaiaware......................................................................... 129 Резюме ............................................................................................................................... 134 Оглавление 9 Часть II. Улучшение функциональности клиентской стороны ....... 135 Глава 4. Улучшенный и более функциональный JavaScript .................... 136 JavaScript сегодня .......................................................................................................... 137 Язык JavaScript и браузер........................................................................................137 Изначальное предназначение языка JavaScript................................................ 138 Обработчик сценариев............................................................................................... 138 Общепризнанные недостатки.................................................................................. 140 Столпы языка JavaScript..........................................................................................141 Объекты как словари.................................................................................................. 142 Функции как объекты................................................................................................ 142 Динамическая типизация.......................................................................................... 143 Замыкания и прототипы........................................................................................... 144 JavaScript будущего (если таковой будет в будущем)..................................145 Модернизация языка.................................................................................................. 146 Все дело в безопасности............................................................................................ 146 JavaScript-движок V8 от Google............................................................................. 147 Библиотека Microsoft AJAX ...................................................................................... 147 Обзор библиотеки.......................................................................................................148 Основные файлы.......................................................................................................... 148 Подключение библиотеки Microsoft AJAX........................................................ 149 Без ненужных украшательств................................................................................. 149 Расширения языка JavaScript.................................................................................150 Примитивные типы..................................................................................................... 150 Новые типы.................................................................................................................... 151 Сокращенные наименования функций................................................................ 152 Объектно-ориентированные расширения..........................................................153 Пространства имен и классы................................................................................... 154 Наследование и полиморфизм............................................................................... 155 Интерфейсы................................................................................................................... 157 Возможности платформы.........................................................................................158 Отражение...................................................................................................................... 159 Объект Application....................................................................................................... 161 Операции со строками............................................................................................... 163 Отладка............................................................................................................................ 163 Сетевой стек................................................................................................................... 164 Модель событий........................................................................................................... 166 Выводы .............................................................................................................................. 167 Глава 5. JavaScript-библиотеки . ........................................................... 169 От серверных элементов управления к JavaScript-виджетам ...................... 170 Фактор ASP.NET.........................................................................................................171 Почему ASP.NET был вехой в истории веб-разработки?............................. 171 Перемена ветра для серверных элементов управления................................ 172 Фактор JavaScript-виджетов...................................................................................173 Самые популярные библиотеки............................................................................. 174 Библиотека Dojo.......................................................................................................... 175 Библиотека ExtJS........................................................................................................ 175 10 Оглавление Библиотека PrototypeJS............................................................................................ 175 Библиотека Script.aculo.us........................................................................................ 177 Библиотека Yahoo! UI................................................................................................ 177 Библиотеки и естественный отбор........................................................................ 179 Библиотека jQuery ........................................................................................................ 181 Быстрый взгляд на библиотеку.............................................................................181 Размер библиотеки...................................................................................................... 181 Фундаментальные особенности.............................................................................. 182 Использование библиотеки в Visual Studio 2008............................................ 183 Ядро библиотеки ............................................................................................................ 184 Функция $.....................................................................................................................184 Упакованные наборы.................................................................................................. 185 Вспомогательные методы функции $.................................................................. 186 Селекторы jQuery........................................................................................................187 CSS-селекторы.............................................................................................................. 187 CSS-селекторы в действии....................................................................................... 188 Фильтры.......................................................................................................................... 189 Фильтры элементов форм........................................................................................ 194 Работа с упакованными наборами........................................................................195 Перебор элементов в упакованном наборе........................................................ 195 Некоторые предопределенные операции............................................................ 196 Связывание методов в цепочки вызовов............................................................ 197 Утилиты jQuery............................................................................................................198 Обработка событий..................................................................................................... 198 Визуальные эффекты................................................................................................. 202 Функции для работы с AJAX.................................................................................. 205 Кэширование.................................................................................................................. 206 Подключаемые модули jQuery............................................................................... 207 Платформа jQuery UI................................................................................................. 208 Выводы .............................................................................................................................. 211 Глава 6. Шаблоны проектирования с использованием AJAX ................. 212 Шаблоны проектирования и разработка кода .................................................... 213 Основные положения шаблонов проектирования.........................................213 Применение шаблонов проектирования............................................................. 214 Истинная ценность шаблонов................................................................................. 214 Шаблоны и идиомы.................................................................................................... 215 Шаблоны, используемые при разработке AJAX‑приложений...................216 Динамическая загрузка данных.............................................................................. 216 Управление DOM-моделью страницы................................................................. 217 Пользовательские действия..................................................................................... 217 Уникальный URL-адрес............................................................................................ 218 Шаблоны JavaScript-разработки .............................................................................. 219 Шаблон «Одиночка»..................................................................................................220 Общая характеристика шаблона «Одиночка».................................................. 220 Реализация шаблона «Одиночка» с использованием клиентской библиотеки Microsoft AJAX...................................................... 221 Оглавление 11 Шаблон «Модель-Представление-Контроллер» ...........................................222 Основы шаблона «Модель-Представление-Контроллер»............................ 223 Шаблон «Модель-Представление-Контроллер» в JavaScript..................... 224 Шаблон загрузки по требованию в JavaScript.................................................228 Основные положения JavaScript-шаблона загрузки по требованию....... 229 Использование объекта XMLHttpRequest для загрузки скриптов по запросу............................................................................................. 229 Использование DOM-модели для загрузки скриптов по запросу............ 230 Шаблон «Выборка с предсказанием» .................................................................... 231 Основные положения шаблона «Выборка с предсказанием»....................232 Подробности шаблона «Выборка с предсказанием»...................................... 232 Причины для использования шаблона «Выборка с предсказанием»...... 232 Открытые вопросы в шаблоне «Выборка с предсказанием»...................... 233 Пример реализации шаблона «Выборка с предсказанием»........................234 Сценарий для шаблона «Выборка с предсказанием».................................... 234 Управление удаленными вызовами...................................................................... 235 Кэширование делает приложения более быстрыми и привлекательными............................................................................................ 239 Выводы о шаблоне «Выборка с предсказанием»............................................. 242 Шаблон «Время ожидания» ...................................................................................... 242 Основные положения шаблона времени ожидания.......................................243 Подробности шаблона времени ожидания......................................................... 243 Причины для использования шаблона времени ожидания......................... 244 Прерывание сессии браузера................................................................................... 244 Пример реализации шаблона времени ожидания..........................................245 Сценарий для шаблона времени ожидания....................................................... 245 Открытые вопросы в шаблоне времени ожидания......................................... 249 Родственные шаблоны..............................................................................................250 Шаблон «Периодическое обновление»............................................................... 250 Шаблон «Пульс».......................................................................................................... 251 Шаблон «Расписание событий»............................................................................. 251 Шаблон «Индикатор прогресса» ............................................................................. 252 Основные положения шаблона индикатора прогресса................................252 Подробности шаблона индикатора прогресса................................................... 253 Элемент UpdateProgress платформы ASP.NET................................................ 253 Открытые вопросы в шаблоне индикатора прогресса................................... 254 Пример реализации шаблона индикатора прогресса....................................255 Сценарий для шаблона индикатора прогресса................................................. 255 Проектирование серверного программного интерфейса.............................. 256 Реализация задачи....................................................................................................... 257 Реализация приемника сообщений....................................................................... 259 Реализация клиентского программного интерфейса..................................... 261 Обновление пользовательского интерфейса..................................................... 266 Отмена выполняющейся серверной задачи......................................................268 Наиболее простой способ отмены операций..................................................... 268 12 Оглавление Проектирование серверной операции, поддерживающей отмену выполнения.............................................................................................. 270 Прерывание операции с клиентской стороны.................................................. 274 Как насчет отката результатов?.............................................................................. 275 Другие шаблоны ............................................................................................................. 276 Шаблон «Микроссылка»..........................................................................................276 Страничные ссылки и микроссылки.................................................................... 276 Микроссылки на практике....................................................................................... 277 Микроссылки в jQuery.............................................................................................. 278 Шаблон «Междоменный прокси-объект».........................................................279 Проблема политики единого домена.................................................................... 279 Удаленные вызовы при помощи JavaScript....................................................... 280 Обработка ошибок....................................................................................................... 281 Шаблон «Регулировка отправки»........................................................................282 Шаблон «Явная отправка»....................................................................................... 282 Поэтапная отправка.................................................................................................... 283 Таймеры для имитации многопоточности.......................................................... 284 Шаблон «Интерактивная форма»......................................................................... 285 Выводы .............................................................................................................................. 286 Глава 7. Привязка данных на стороне клиента ...................................... 288 Архитектурный тур по привязке данных в платформе ASP.NET .............. 289 Проектирование HTML-шаблона.........................................................................290 Автоматическое формирование HTML-разметки........................................... 290 Формирование HTML-разметки на основе шаблонов.................................. 291 Интерфейс ITemplate.................................................................................................. 293 Сравнение шаблонного и автоматизированного подходов.......................... 296 Проектирование источника данных.....................................................................297 Допустимые источники данных в ASP.NET...................................................... 297 Свойства привязки данных...................................................................................... 298 Привязка данных в эпоху AJAX............................................................................299 Инструменты для эффективной привязки данных на стороне клиента..... 299 Не стоит сбрасывать со счетов частичную отрисовку................................... 302 Шаблон на стороне браузера .................................................................................... 303 Основные положения шаблона на стороне браузера....................................303 Подробное описание шаблона на стороне браузера....................................... 304 Что же, в сущности, такое — HTML-шаблон?................................................. 304 Смешивание данных и шаблонов.......................................................................... 305 Двусторонний шаблон............................................................................................... 306 Пример реализации шаблона на стороне браузера........................................307 Шаблон на стороне браузера: общая картина................................................... 308 Подготовка страницы................................................................................................. 308 Генератор HTML-разметки...................................................................................... 311 Настройка генерации разметки для элемента данных.................................. 317 Генерация персонализированной разметки........................................................ 319 Украшение вашего решения эффектами jQuery.............................................. 321 Оглавление 13 Шаблон «HTML-сообщение» ................................................................................... 322 Основные положения шаблона «HTML-сообщение»...................................323 Подробное описание шаблона «HTML-сообщение»...................................... 323 Причины для использования шаблона «HTML-сообщение»..................... 324 Сравнение «шаблона на стороне браузера» и HTML-сообщения............ 326 Пример реализации шаблона «HTML-сообщение».......................................327 Шаблон «HTML-сообщение»: общая картина................................................. 327 Удаленный сервис........................................................................................................ 328 Генерация разметки..................................................................................................... 331 Расширение DynamicPopulate................................................................................. 333 Небольшой пример реализации на платформе ASP.NET MVC................. 334 Взгляд на платформу ASP.NET AJAX 4.0 ............................................................ 336 Шаблоны ASP.NET AJAX........................................................................................336 Структура шаблона..................................................................................................... 336 Компонент Sys.UI.DataView.................................................................................... 338 Внедрение дополнительной логики в шаблон.................................................. 340 Компонент Sys.Data.DataSource............................................................................. 342 Поддержка сервисов данных ADO.NET.............................................................343 Основные положения платформы ADO.NET Data Services....................... 343 Использование прокси-классов для сервисов данных ADO.NET............ 343 Отображение содержимого, возвращаемого сервисом данных ADO.NET.................................................................................................. 344 Выводы .............................................................................................................................. 345 Глава 8. Насыщенные интернет-приложения ........................................ 346 В поисках более насыщенной Всемирной паутины ......................................... 346 Мечта о двоичном коде, запускаемым во Всемирной паутине.................347 Первая попытка — технология ActiveX.............................................................. 347 Тернии безопасности и совместимости............................................................... 348 Другая попытка — технология Flash.................................................................... 348 Подключаемые модули браузера...........................................................................349 Краткая история подключаемых модулей.......................................................... 350 Вопросы безопасности............................................................................................... 350 Тег <object>.................................................................................................................... 351 Характеристики подключаемого модуля браузера......................................... 352 Подключаемые модули, используемые для размещения приложений............................................................................................................. 352 Обзор платформы Microsoft Silverlight ................................................................ 353 Элементы архитектуры Silverlight........................................................................354 Сравнение Silverlight и AJAX.................................................................................. 354 Сравнение Silverlight и «умных» клиентов....................................................... 355 Запуск Silverlight-приложений............................................................................... 356 Графика и мультимедиа............................................................................................357 Элементы управления для работы с мультимедиа......................................... 357 Анимация........................................................................................................................ 358 Технология Deep Zoom.............................................................................................. 358 14 Оглавление Создание приложений...............................................................................................359 Код и разметка.............................................................................................................. 360 Языки программирования........................................................................................ 361 Пакеты XAP................................................................................................................... 361 Загрузка исполняющей среды CLR...................................................................... 362 Программная модель платформы Microsoft Silverlight .................................. 362 Пользовательский интерфейс, основанный на WPF....................................363 Менеджер верстки....................................................................................................... 363 Общий набор элементов управления................................................................... 365 Менеджер привязки данных.................................................................................... 366 Совместимость между кодом Silverlight и WPF............................................. 367 Базовый набор классов .NET..................................................................................368 Поддержка технологии LINQ.................................................................................. 369 Поддержка многопоточности.................................................................................. 370 Поддержка таймеров................................................................................................... 372 Изолированное хранилище.....................................................................................373 Почему локальное хранилище так важно?........................................................ 373 Подсистема хранения данных................................................................................. 374 Работа с файлами и папками.................................................................................. 375 Работа с потоками....................................................................................................... 376 Управление хранилищем........................................................................................... 378 Дисковые квоты............................................................................................................ 379 Сетевые операции.......................................................................................................380 Загрузка данных........................................................................................................... 381 Работа с HTTP-запросами........................................................................................ 384 Работа с сервисами...................................................................................................... 385 Выполнение междоменных запросов................................................................... 387 Платформа Microsoft Silverlight и безопасность кода ..................................... 389 Модель безопасности.................................................................................................389 Защита доступа по правам кода............................................................................. 389 Прозрачность кода....................................................................................................... 390 Атрибуты безопасности............................................................................................390 Прозрачный код............................................................................................................ 391 Критичный код............................................................................................................. 391 Безопасно-критичный код........................................................................................ 392 Безопасность, обеспечиваемая архитектурой платформы..........................394 Код приложения и код платформы...................................................................... 395 Правила наследования............................................................................................... 395 Выводы .............................................................................................................................. 396