ebook img

ASP.NET MVC Framework PDF

320 Pages·2010·6.463 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview ASP.NET MVC Framework

Гайдар Магдануров Владимир Юнев Санкт-Петербург «БХВ-Петербург» 2010 УДК 681.3.06 ББК 32.973.26-018.2 М12 Магдануров, Г. И. М12 ASP.NET MVC Framework / Г. И. Магдануров, В. А. Юнев. — СПб.: БХВ-Петербург, 2010. — 320 с.: ил. — (Профессиональное программирование) ISBN 978-5-9775-0462-1 Рассмотрены основные принципы и возможности технологии ASP.NET MVC Framework и показаны способы ее практического использования при разработке веб-приложений. Описаны преимущества подхода разработки MVC и рассмотрена структура MVC-приложения. Приведено сравнение технологии WebForms и MVC Framework и рассмотрены вопросы их со- вмещения. Описаны модель и доступ к данным (технологии LINQ, Entity Frame- work и др.), контроллеры, представление и интерфейс приложения, меха- низмы маршрутизации и Ajax-функциональность. Уделено внимание во- просам тестирования веб-приложений. Рассмотрены особенности примене- ния ASP.NET MVC 2 в Visual Studio 2010. Для программистов УДК 681.3.06 ББК 32.973.26-018.2 Группа подготовки издания: Главный редактор Екатерина Кондукова Зам. главного редактора Игорь Шишигин Зав. редакцией Григорий Добин Редактор Екатерина Капалыгина Компьютерная верстка Ольги Сергиенко Корректор Зинаида Дмитриева Дизайн серии Инны Тачиной Оформление обложки Елены Беляевой Зав. производством Николай Тверских Лицензия ИД № 02429 от 24.07.00. Подписано в печать 30.04.10. Формат 70 1001/16. Печать офсетная. Усл. печ. л. 25,8. Тираж 1500 экз. Заказ № "БХВ-Петербург", 190005, Санкт-Петербург, Измайловский пр., 29. Санитарно-эпидемиологическое заключение на продукцию № 77.99.60.953.Д.005770.05.09 от 26.05.2009 г. выдано Федеральной службой по надзору в сфере защиты прав потребителей и благополучия человека. Отпечатано с готовых диапозитивов в ГУП "Типография "Наука" 199034, Санкт-Петербург, 9 линия, 12 ISBN 978-5-9775-0462-1 © Магдануров Г. И., Юнев В. А., 2010 © Оформление, издательство "БХВ-Петербург", 2010 Оглавление Глава 1. Знакомство с MVC Framework .......................................................... 9 Паттерн проектирования MVC ........................................................................................... 9 История паттерна проектирования MVC ......................................................................... 11 Преимущества подхода разработки MVC ........................................................................ 12 1. Полный контроль над кодом разметки ................................................................. 12 2. Расширяемость ....................................................................................................... 12 3. Простота автоматического тестирования ............................................................. 13 Установка MVC Framework ............................................................................................... 13 Первое приложение на MVC Framework .......................................................................... 14 Структура MVC-приложения .................................................................................... 16 Папка Content ..................................................................................................... 16 Папка Controllers ............................................................................................... 16 Папка Models ..................................................................................................... 17 Папка Scripts ...................................................................................................... 17 Папка Views ....................................................................................................... 17 Файл Default.aspx ............................................................................................... 18 Файл Global.asax ................................................................................................ 19 Файл Web.config ................................................................................................ 19 Обработка запросов MVC-приложением ................................................................. 19 Компоненты MVC-приложения ................................................................................ 20 Таблица маршрутизации ................................................................................... 21 Контроллер......................................................................................................... 22 Представление ................................................................................................... 23 Подход к разработке MVC-приложений .......................................................................... 24 Заключение ......................................................................................................................... 24 Глава 2. MVC Framework и WebForms .......................................................... 25 Сравнение WebForms и MVC Framework ......................................................................... 26 Технология WebForms ............................................................................................... 26 Преимущества WebForms ................................................................................. 26 Недостатки WebForms ...................................................................................... 27 4 Оглавление Технология MVC Framework ..................................................................................... 28 Преимущества MVC Framework ...................................................................... 29 Недостатки MVC Framework ............................................................................ 30 Выбор подхода к разработке веб-приложения ......................................................... 30 Реализация подхода MVC в WebForms ............................................................................ 32 Совмещение WebForms и MVC Framework в рамках одного веб-приложения ............ 37 Использование элементов управления WebForms в MVC-приложениях .............. 37 Внедрение страниц WebForms в MVC-приложения ................................................ 40 Использование MVC Framework в существующих решениях WebForms ............. 42 Заключение ......................................................................................................................... 46 Глава 3. Модель и доступ к данным ............................................................... 47 Технология LINQ ............................................................................................................... 50 LINQ для SQL ..................................................................................................................... 51 Entity Framework ................................................................................................................. 54 Принципы построения слоя доступа к данным ............................................................... 55 Возможность замены источника данных ................................................................. 56 Реализация слоя данных ............................................................................................ 57 Пример использования слоя данных ........................................................................ 68 Механизмы для работы с данными ................................................................................... 69 XML-данные ............................................................................................................... 69 Работа с данными через ADO.NET ........................................................................... 71 LINQ для SQL ............................................................................................................. 73 Entity Framework ......................................................................................................... 74 NHibernate ................................................................................................................... 76 Сравнение механизмов доступа к данным ............................................................... 79 Рекомендации по выбору механизма доступа к данным ........................................ 80 Глава 4. Контроллеры ....................................................................................... 81 Назначение контроллеров.................................................................................................. 81 Обзор контроллеров в ASP.NET MVC ..................................................................... 81 Простой пример реализации контроллера ....................................................................... 83 Архитектура контроллеров ................................................................................................ 91 Порядок вызова архитектурных механизмов ........................................................... 92 Фабрика контроллеров ............................................................................................... 93 Действия, фильтры и атрибуты ................................................................................. 96 Переопределение свойства ActionInvoker ........................................................ 96 Атрибуты ActionMethodSelectorAttribute ......................................................... 98 Атрибуты, производные от FilterAttribute ..................................................... 100 Атрибуты ActionFilterAttribute и OutputCacheAttribute ................................ 112 Стандартные реализации класса ActionResult ............................................... 115 Создание своей реализации ActionResult ....................................................... 120 Model Binding ............................................................................................................ 123 Советы по использованию контроллеров....................................................................... 129 Атрибуты ActionNameSelectorAttribute и ActionNameAttribute ............................. 129 Наследование контроллеров .................................................................................... 130 Оглавление 5 Асинхронное выполнение при работе с контроллерами ....................................... 132 Паттерн IAsyncResult ...................................................................................... 134 Паттерн Event................................................................................................... 135 Паттерн Delegate .............................................................................................. 137 Дополнительные сведения об асинхронных контроллерах ......................... 138 Неизвестные действия и метод HandleUnknownAction ......................................... 139 Глава 5. Представление и интерфейс приложения .................................... 140 Стандартный механизм представлений на базе WebForms .......................................... 140 Code-behind-файлы ................................................................................................... 141 Мастерские страницы и элементы управления ...................................................... 141 Файлы представлений в структуре проекта ........................................................... 144 Данные для отображения и ViewData ..................................................................... 146 Строгая типизация данных представления.................................................... 146 Поиск элементов в коллекции ViewData ....................................................... 148 Генерация разметки представлением ............................................................................. 149 Вложенный управляющий код ................................................................................ 150 <%= значение %> ........................................................................................... 153 <% управляющая конструкция %> ............................................................... 153 Вспомогательные методы ........................................................................................ 153 Кодирование текста и атрибутов .................................................................... 155 Гиперссылки на действия контроллеров ....................................................... 155 Элементы управления HTML-страницы ....................................................... 157 Создание собственного вспомогательного метода ................................................ 167 Конкатенация строк......................................................................................... 168 Использование ресурсов ................................................................................. 170 Использование дополнительных слоев абстракции ..................................... 170 Использование серверных элементов управления WebForms ..................... 174 Частичные представления ............................................................................................... 175 Создание гаджетов ................................................................................................... 177 Заключение ....................................................................................................................... 182 Глава 6. Механизмы маршрутизации........................................................... 183 Маршрутизация в ASP.NET ............................................................................................ 184 Механизмы маршрутизации ............................................................................................ 186 Маршрут и класс Route ............................................................................................ 186 Коллекция маршрутов и класс RouteCollection ...................................................... 188 Таблица маршрутизации и класс RouteTable ......................................................... 190 Ограничения и интерфейс IRouteConstraint ........................................................... 191 Обработчик маршрутов и интерфейс IRouteHandler ............................................. 192 Создание маршрутов ........................................................................................................ 193 Наименование маршрута ......................................................................................... 193 RedirectToRoute ................................................................................................ 194 AjaxHelper ........................................................................................................ 194 UrlHelper .......................................................................................................... 195 6 Оглавление Шаблон маршрута и свойство Url........................................................................... 195 Значения параметров маршрута по умолчанию и свойство Defaults ................... 196 Ограничения параметров маршрута и свойство Constraints ................................. 197 Параметры маршрута и свойство DataTokens ........................................................ 198 Игнорирование маршрутов ...................................................................................... 200 Советы по использованию маршрутов ........................................................................... 203 Маршруты и валидация запросов ........................................................................... 203 Хранение маршрутов в базе данных ....................................................................... 204 Маршрутизация и тестирование .............................................................................. 208 Подготовка инструментов .............................................................................. 208 Создание тестов ............................................................................................... 209 Утилита ASP.NET Routing Debugger ............................................................. 216 Заключение ....................................................................................................................... 217 Глава 7. Ajax-функциональность .................................................................. 219 История успеха Ajax ........................................................................................................ 219 Современный Ajax ........................................................................................................... 221 Пример использования Ajax ............................................................................................ 223 MVC Framework и Ajax .................................................................................................... 227 Ajax-функционал в MVC Framework ...................................................................... 227 AjaxOptions ....................................................................................................... 229 Ajax.BeginForm ................................................................................................ 231 Ajax.ActionLink ................................................................................................. 232 IsAjaxRequest .................................................................................................... 234 jQuery ......................................................................................................................... 234 Библиотека jQuery ............................................................................................................ 237 jQuery API ................................................................................................................. 238 Функции для работы с Ajax ............................................................................ 238 События Ajax в jQuery .................................................................................... 243 Применение Ajax и jQuery в MVC Framework ............................................................... 246 Пример 1. Проверка логина при регистрации ........................................................ 246 Реализация на ASP.NET Ajax ......................................................................... 247 Реализация на jQuery ....................................................................................... 249 Пример 2. Логин через Ajax .................................................................................... 250 Реализация на ASP.NET Ajax ......................................................................... 251 Реализация на jQuery ....................................................................................... 253 Полезные советы .............................................................................................................. 255 Вопросы безопасности ............................................................................................. 255 Обработка пользовательских данных ............................................................ 255 Управление данными и cookie........................................................................ 256 Расширения jQuery ................................................................................................... 259 Выбор между ASP.NET Ajax и jQuery .................................................................... 260 Заключение ....................................................................................................................... 261 Оглавление 7 Глава 8. Тестирование веб-приложений ...................................................... 262 Установка и настройка NUnit .......................................................................................... 262 Создание и выполнение тестов ....................................................................................... 264 Несколько слов о важности тестирования ..................................................................... 267 Тесты и MVC Framework ................................................................................................. 268 Заключение ....................................................................................................................... 275 Глава 9. ASP.NET MVC 2 и Visual Studio 2010 ............................................ 276 Области ............................................................................................................................. 276 Области для нескольких проектов .......................................................................... 277 Области в одном проекте ......................................................................................... 282 Шаблонные помощники .................................................................................................. 284 Шаблоны по умолчанию .......................................................................................... 286 Создание шаблонов .................................................................................................. 288 Аннотация данных и валидация .............................................................................. 290 Классы метаданных .................................................................................................. 293 Новые атрибуты................................................................................................................ 295 Http***Attribute и перегрузка типов запросов ....................................................... 295 DefaultValueAttribute ................................................................................................ 296 RequireHttpsAttribute ................................................................................................ 296 Улучшения в связывании данных ................................................................................... 296 Прочие улучшения в API ................................................................................................. 297 Нововведения Visual Studio 2010 .................................................................................... 298 Мультитаргетинг в Visual Studio 2010 .................................................................... 299 Поддержка нескольких мониторов ......................................................................... 299 Сниппеты JavaScript, Html, ASP.NET в Visual Studio 2010 .................................. 300 Что дальше? ...................................................................................................................... 301 Заключение ....................................................................................................................... 302 ПРИЛОЖЕНИЯ ................................................................................................ 303 Приложение 1. Настройка среды для хостинга решений на MVC Framework .......................................................................................... 304 Настройка маршрутизации .............................................................................................. 304 Приложение 2. Оптимизация производительности ................................... 309 Кэширование данных ....................................................................................................... 309 Сжатие данных ................................................................................................................. 310 Уменьшение размера передаваемых файлов ................................................................. 311 Уменьшение JavaScript ............................................................................................ 312 Уменьшение CSS ...................................................................................................... 312 Уменьшение изображений ....................................................................................... 313 8 Оглавление Другие способы клиентской оптимизации ..................................................................... 314 Уменьшение количества запросов .......................................................................... 314 Отказ от перенаправлений ....................................................................................... 314 Использование CSS Sprites ...................................................................................... 315 Размер cookie ............................................................................................................ 315 Заключение ....................................................................................................................... 315 Приложение 3. Ресурсы по MVC Framework .............................................. 316 Предметный указатель .................................................................................... 317 1 ГЛАВА Знакомство с MVC Framework Первая глава книги посвящена знакомству с подходом разработки веб- приложений на платформе ASP.NET с использованием MVC Framework. По- скольку эта книга рассчитана на разработчиков с разным опытом создания программного обеспечения, прежде чем рассматривать подход к разработке веб-приложений на основе MVC Framework, мы поговорим об основных принципах архитектуры MVC. Прочитав эту главу, вы узнаете об основных компонентах MVC Framework и о том, как эти компоненты находят свое от- ражение в коде приложения. Если вы уже знакомы в общих чертах с MVC Framework, можете смело про- пустить эту главу и перейти к более детальному изучению составляющих MVC Framework в последующих главах. Паттерн проектирования MVC Аббревиатура MVC, давшая название MVC Framework, скрывает в себе всю суть архитектурного подхода построения приложений по принципу MVC: модель, представление и контроллер — это те компоненты, из которых со- стоит каждое приложение, созданное в этой парадигме. Приложение, построенное с использованием паттерна проектирования MVC, разбивается на три слабосвязанных между собой логических компонента.  Модель — компонент приложения, отвечающий за взаимодействие с ис- точником данных (база данных, XML-файлы, файловая система и т. п.), а также содержащий описание объектов, описывающих данные, с которы- ми работает приложение.  Представление — компонент, отвечающий за отображение пользователь- ского интерфейса — в случае веб-приложения HTML-разметки или других форматов данных, принимаемых вызывающим клиентом. 10 Глава 1  Контроллер — компонент, содержащий логику приложения. В контролле- ре описана логика взаимодействия с пользователем — в случае веб- приложения логика обработки HTTP-запросов к веб-приложению. Кон- троллер взаимодействует с объектами модели, которые, в свою очередь, влияют на представление. Графическое представление архитектуры MVC приведено на рис. 1.1. Модель Представление Контроллер Рис. 1.1. Архитектура MVC Важно отметить слабую связанность компонентов между собой. Компонент модель автономен и не зависит от реализации контроллеров и представлений, его реализация не зависит от реализации остальной части приложений. С точки зрения контроллера и представления модель представляет собой черный ящик, из которого приходят или в которой помещаются определен- ные объекты. Говоря простым языком, модель предоставляет контроллеру и представлению некоторый контракт, в соответствии с которым все три ком- понента системы работают с данными в одинаковом формате. Преимущество такого подхода можно продемонстрировать на примере из жиз- ни. В свое время один из авторов книги работал над Windows-приложением для ведения небольшой складской базы. Это приложение было построено на базе Windows Forms, в полной мере подход MVC не использовался, однако в прило- жении был выделенный автономный компонент для работы с данными — мо- дель. В дальнейшем, когда потребовалось создать веб-приложение для досту- па к складской базе данных из внутренней сети и Интернета, сборка, содержа- щая компонент модель, была подключена к проекту веб-приложения и использовалась совместно с работающим на сервере Windows Forms-приложе- нием. В дальнейшем этой же моделью данных воспользовались веб-службы, которые были разработаны поверх складской базы данных.

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.