Разработка веб-приложений с использованием ASP.NET MVC ...

Post on 09-Feb-2016

68 views 0 download

description

Разработка веб-приложений с использованием ASP.NET MVC Framework. Гайдар Магдануров Microsoft Евгений Агафонов ABBYY. Почему я здесь?. Желаю: быстрее разрабатывать веб-приложения полнее тестировать логику приложения проще вносить изменения иметь полный контроль над разметкой - PowerPoint PPT Presentation

Transcript of Разработка веб-приложений с использованием ASP.NET MVC ...

Разработка веб-приложений с использованием 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

HomeController(Controller)

Product(Model) SQL

EditProduct.aspx

(View)

http://svr/Product/EditProduct/3

Products.aspx

(View)ViewData

ViewData

Жизненный цикл запроса

Запрос Таблица маршрутов

Контроллер

Действие контроллера

Представление

Ответ (разметка)

Как MVC выглядит?

1

2

3

4

Таблица маршрутизации

Контроллер

Модель

Представление

Каков процесс разработки?

1. Создать модель – определить структуры данных

2. Описать физическую структуру приложения маршрутами

3. Создать контроллеры и их действия

4. Создать представления5. Разработать unit-тесты

Пойдем по порядку…

Маршруты

http://srv/Home/Products/2

1

2

• Задаются в Global.asax• Поддерживают регулярные

выражения• Механизм может быть

переопределен

Маршруты

• Маршрут будет использован, только если 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