View - Amazon Web Services

advertisement
Разработка веб-приложений с
использованием
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
View
Controller
• Model — данные и валидация
• 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)
HomeController
(Controller)
EditProduct
.aspx
(View)
Product
(Model)
SQL
Жизненный цикл запроса
Запрос
Таблица
маршрутов
Контроллер
Ответ
(разметка)
Представление
Действие
контроллера
Как MVC выглядит?
2
Контроллер
3
Модель
4
Представление
1
Таблица маршрутизации
Каков процесс разработки?
1. Создать модель – определить
структуры данных
2. Описать физическую структуру
приложения маршрутами
3. Создать контроллеры и их действия
4. Создать представления
5. Разработать 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 для разработчиков»
Не забывайте заполнять анкеты по докладам
Ваше мнение очень важно!
1. Заполните анкету: http://platforma2009.ru/Eval.aspx
Терминалы - холлы конференции и интернет-кафе
на 1 этаже
2. Чтобы участвовать в розыгрыше призов
3. Результаты – на сайте конференции и в голосовых
объявлениях после розыгрышей в 14:30, 16:00,
17:30 и 19:00
Подробная информация по заполнению анкет – на сайте
конференции
Запись доклада на
www.platforma2009.ru
Download