Разработка веб-приложений с использованием ASP.NET MVC ...
description
Transcript of Разработка веб-приложений с использованием ASP.NET MVC ...
![Page 1: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/1.jpg)
![Page 2: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/2.jpg)
Разработка веб-приложений с использованием ASP.NET MVC Framework
Гайдар МагдануровMicrosoftЕвгений АгафоновABBYY
![Page 3: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/3.jpg)
Почему я здесь?Желаю:• быстрее разрабатывать веб-приложения• полнее тестировать логику приложения• проще вносить изменения• иметь полный контроль над разметкой
Сомневаюсь:• Web Forms, MVC, Свой Framework?• JavaScript, UpdatePanel, Silverlight?• BMW, Ferrari, Лада «Калина»?
![Page 4: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/4.jpg)
О чем поговорим?• Обзор шаблона проектирования MVC• Обзор проекта MVC Framework• Возможности MVC Framework–Маршруты–Фабрика контроллеров– Внедрение зависимостей–Фильтры действий (кеш, безопасность и
др.)– Обновление моделей– Валидация данных– Строгая типизация представления– Возможности на стороне клиента
![Page 5: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/5.jpg)
Model-View-Controller?• Впервые описан в 1979 году• Предназначен для отделения бизнес
логики от интерфейса представления
• Реализаций огромное множество:ASP.NET MVC, Maverick.NET, Monorail, ProMesh.NET, PureMVC, Mach-II, Model-Glue, FuseBox, Aranea, Cocoon, Grails, GWT, Spring, Struts, Stripes, Tapestry, WebObjects, Wicket, JSF, SproutCore, Wawemaker, Dojo, Catalyst, CGI:Application, Solstice, Gantry, CakePHP, Joomla, Odin Assemble, Prado, Solar, Zand Framework, Symfony, Django, Pylons, Enthought, Zope, web2py, Camping, Merb, Nitro, Ramaze, Ruby on Rails, XForms
![Page 6: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/6.jpg)
Model-View-Controller?
• Model — данные и валидация• View — отображение интерфейса• Controller — взаимодействие с
пользователем
Model
View Controller
![Page 7: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/7.jpg)
И чем же он хорош, этот MVC?• Сродство к веб-приложениям– Запрос пришел, его обработали, вернули
результат– Веб многолик и представлений может
быть много• Простой подход к разработке– Система сложна настолько, насколько
этого хочет разработчик– Полный контроль над представлением
• Основные парадигмы:– Разделение проблем (SoC)– Простота тестирования логики (TDD)
![Page 8: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/8.jpg)
Проект ASP.NET MVC?• ASP.NET MVC Framework 1.0 Beta– Доступен с исходным кодом– http://www.codeplex.com/aspnet
• ASP.NET MVC Contrib– Проект сообщества разработчиков–Множество готовых компонентов– http://www.codeplex.com/MVCContrib
![Page 9: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/9.jpg)
В чем отличие от Web Forms?
Теряем:• Postback и жизненный цикл страницы• События, контролы и Viewstate• Сложные вопросы для интервью
Приобретаем:• Гибкую инфраструктуру• Полный контроль над разметкой• Автоматическое тестирование
![Page 10: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/10.jpg)
Как MVC работает?
Браузер Серверhttp://srv/Product/Categories/2
HomeController(Controller)
Product(Model) SQL
EditProduct.aspx
(View)
http://svr/Product/EditProduct/3
Products.aspx
(View)ViewData
ViewData
![Page 11: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/11.jpg)
Жизненный цикл запроса
Запрос Таблица маршрутов
Контроллер
Действие контроллера
Представление
Ответ (разметка)
![Page 12: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/12.jpg)
Как MVC выглядит?
1
2
3
4
Таблица маршрутизации
Контроллер
Модель
Представление
![Page 13: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/13.jpg)
Каков процесс разработки?
1. Создать модель – определить структуры данных
2. Описать физическую структуру приложения маршрутами
3. Создать контроллеры и их действия
4. Создать представления5. Разработать unit-тесты
![Page 14: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/14.jpg)
Пойдем по порядку…
![Page 15: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/15.jpg)
Маршруты
http://srv/Home/Products/2
1
2
• Задаются в Global.asax• Поддерживают регулярные
выражения• Механизм может быть
переопределен
![Page 16: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/16.jpg)
Маршруты
• Маршрут будет использован, только если date удовлетворяет формату
NN-NN-NNNN
![Page 17: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/17.jpg)
Маршруты• Возможность создания
собственных условий для маршрутов– Аутентификация, переменные
окружения и любые другие условия
![Page 18: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/18.jpg)
Тестирование маршрутов• Стандартный unit-тест
![Page 19: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/19.jpg)
Тестирование маршрутов• С использованием своего
механизма маршрутизации• Проект RouteTester Фила Хаака
![Page 20: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/20.jpg)
Контроллер• Обработка запросов и
взаимодействие с моделью• Параметры метода связываются
автоматически
![Page 21: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/21.jpg)
Связывание параметров метода• По названию переменной и поля
формы• Конструирование сложных по
названиям полей формы и свойств объекта
![Page 22: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/22.jpg)
Управление связыванием• Возможность включить и
исключить свойства при конструировании объектов
![Page 23: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/23.jpg)
Обновление модели• Методы UpdateModel и
TryUpdateModel• Ограничения - whitelist интерфейс
![Page 24: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/24.jpg)
Фильтры• ActionFilter - выполнение некоторой
предварительной операции• AcceptVerbsAttribute– Ограничения по типа зупроса
![Page 25: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/25.jpg)
Пример ActionFilter• Сжатие
![Page 26: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/26.jpg)
Фабрика контроллеров• Возможность определить свою
фабрику, создающую контроллеры• Определение удобной
инфраструктуры контроллерам
![Page 27: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/27.jpg)
Представление• Автономность• Возможность замены движка• Раннее или позднее связывание с
моделью
![Page 28: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/28.jpg)
Типизация• Строгая – через ViewData.Model• Не строгая – коллекция ViewData[]• Поиск в коллекции, затем в Model
через вызов ViewData.Eval()
![Page 29: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/29.jpg)
Валидация• Механизм ModelState
![Page 30: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/30.jpg)
Замена движка представления• Минимум кода
![Page 31: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/31.jpg)
AJAX• Форма в стиле UpdatePanel– Возможно, но не без ручного кода
![Page 32: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/32.jpg)
JSON, XML?• JsonResult для возвращения JSON
![Page 33: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/33.jpg)
Демонстрация
Простой MVC чат
![Page 34: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/34.jpg)
Вопросы?
Ищите нас во всех магазинах городаНа стенде «Спроси экперта» и на круглом столе «Веб-технологии Microsoft для разработчиков»
![Page 35: Разработка веб-приложений с использованием ASP.NET MVC Framework](https://reader033.fdocuments.net/reader033/viewer/2022061602/56815c36550346895dca1f44/html5/thumbnails/35.jpg)
1.Заполните анкету: http://platforma2009.ru/Eval.aspx Терминалы - холлы конференции и интернет-кафе на 1 этаже
2.Чтобы участвовать в розыгрыше призов
3.Результаты – на сайте конференции и в голосовых объявлениях после розыгрышей в 14:30, 16:00, 17:30 и 19:00
Не забывайте заполнять анкеты по докладамВаше мнение очень важно!
Подробная информация по заполнению анкет – на сайте конференции