360 likes | 570 Views
Разработка веб-приложений с использованием ASP.NET MVC Framework. Гайдар Магдануров Microsoft Евгений Агафонов ABBYY. Почему я здесь?. Желаю: быстрее разрабатывать веб-приложения полнее тестировать логику приложения проще вносить изменения иметь полный контроль над разметкой
E N D
Разработка веб-приложений с использованием ASP.NET MVC Framework Гайдар Магдануров Microsoft Евгений Агафонов ABBYY
Почему я здесь? Желаю: • быстрее разрабатывать веб-приложения • полнее тестировать логику приложения • проще вносить изменения • иметь полный контроль над разметкой Сомневаюсь: • Web Forms, MVC, Свой Framework? • JavaScript, UpdatePanel, Silverlight? • BMW, Ferrari, Лада «Калина»?
О чем поговорим? • Обзор шаблона проектирования MVC • Обзор проекта MVC Framework • Возможности MVC Framework • Маршруты • Фабрика контроллеров • Внедрение зависимостей • Фильтры действий (кеш, безопасность и др.) • Обновление моделей • Валидация данных • Строгая типизация представления • Возможности на стороне клиента
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
Model-View-Controller? Model • Model — данные и валидация • View — отображение интерфейса • Controller — взаимодействие с пользователем View Controller
И чем же он хорош, этот MVC? • Сродство к веб-приложениям • Запрос пришел, его обработали, вернули результат • Веб многолик и представлений может быть много • Простой подход к разработке • Система сложна настолько, насколько этого хочет разработчик • Полный контроль над представлением • Основные парадигмы: • Разделение проблем (SoC) • Простота тестирования логики (TDD)
Проект ASP.NET MVC? • ASP.NET MVC Framework 1.0 Beta • Доступен с исходным кодом • http://www.codeplex.com/aspnet • ASP.NET MVC Contrib • Проект сообщества разработчиков • Множество готовых компонентов • http://www.codeplex.com/MVCContrib
В чем отличие от Web Forms? Теряем: • Postbackи жизненный цикл страницы • События, контролы и Viewstate • Сложные вопросы для интервью Приобретаем: • Гибкую инфраструктуру • Полный контроль над разметкой • Автоматическое тестирование
Как MVC работает? http://srv/Product/Categories/2 Сервер Браузер http://svr/Product/EditProduct/3 Products.aspx (View) ViewData HomeController (Controller) EditProduct .aspx (View) ViewData SQL Product (Model)
Как MVC выглядит? 2 Контроллер 3 Модель 4 Представление 1 Таблица маршрутизации
Каков процесс разработки? • Создать модель – определить структуры данных • Описать физическую структуру приложения маршрутами • Создать контроллеры и их действия • Создать представления • Разработать unit-тесты
Маршруты • Задаются в Global.asax • Поддерживают регулярные выражения • Механизм может быть переопределен 1 http://srv/Home/Products/2 2
Маршруты • Маршрут будет использован, только если date удовлетворяет формату NN-NN-NNNN
Маршруты • Возможность создания собственных условий для маршрутов • Аутентификация, переменные окружения и любые другие условия
Тестирование маршрутов • Стандартный unit-тест
Тестирование маршрутов • С использованием своего механизма маршрутизации • Проект RouteTesterФила Хаака
Контроллер • Обработка запросов и взаимодействие с моделью • Параметры метода связываются автоматически
Связывание параметров метода • По названию переменной и поля формы • Конструирование сложных по названиям полей формы и свойств объекта
Управление связыванием • Возможность включить и исключить свойства при конструировании объектов
Обновление модели • Методы UpdateModelи TryUpdateModel • Ограничения - whitelistинтерфейс
Фильтры • ActionFilter- выполнение некоторой предварительной операции • AcceptVerbsAttribute • Ограничения по типа зупроса
Пример ActionFilter • Сжатие
Фабрика контроллеров • Возможность определить свою фабрику, создающую контроллеры • Определение удобной инфраструктуры контроллерам
Представление • Автономность • Возможность замены движка • Раннее или позднее связывание с моделью
Типизация • Строгая – через ViewData.Model • Не строгая – коллекция ViewData[] • Поиск в коллекции, затем в Model через вызов ViewData.Eval()
Валидация • Механизм ModelState
Замена движка представления • Минимум кода
AJAX • Форма в стиле UpdatePanel • Возможно, но не без ручного кода
JSON, XML? • JsonResultдля возвращения JSON
Демонстрация Простой MVC чат
Вопросы? Ищите нас во всех магазинах города На стенде «Спроси экперта» и на круглом столе «Веб-технологииMicrosoft для разработчиков»
Не забывайте заполнять анкетыпо докладамВаше мнение очень важно! • Заполните анкету: http://platforma2009.ru/Eval.aspxТерминалы - холлы конференции и интернет-кафе на 1 этаже • Чтобы участвовать в розыгрыше призов • Результаты – на сайте конференции и в голосовых объявлениях после розыгрышей в 14:30, 16:00, 17:30 и 19:00 Подробная информация по заполнению анкет – на сайте конференции