Тренинг «Разработка веб-приложений с использованием ASP.NET MVC Framework» Занятие 1 Знакомство с подходом MVC Гайдар Магдануров [email protected] Знакомство с подходом MVC Разработка веб-приложений • Простой протокол передачи данных HTTP • Простые стандарты описания интерфейса HTML/CSS • Простой принцип работы «запрос-ответ» • Абстракции для упрощения разработки: – Простые – классические ASP, PHP – Сложные – ASP.NET, JSP – Гибкие – MVC 3 Паттерн Model-View-Controller • Впервые описан в 1979 году – Trygve M. H. Reenskaug/MVC—XEROX PARC 1978-79 • Предназначен для отделения данных и логики от интерфейса • Реализаций огромное множество: ASP.NET MVC, Maverick.NET, Monorail, ProMesh.NET, PureMVC, MachII, 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 (контроллер)— логика 5 Почему MVC для веб-приложений? • Внешний вид страниц часто изменяется • Иногда нужно несколько вариантов представления одной и той же страницы – Разные браузеры (IE, FireFox, Safari, Opera, ...) – Разные платформы (PC, телефон, КПК, ...) – Разные модели отображения (графические, текстовые, ...) • Тестирование приложения без зависимости от интерфейса значительно проще 6 ASP.NET MVC Framework ASP.NET MVC Framework • Набор компонентов для создания приложений, основанных на подходе MVC • Статус MVC Framework - Release Candidate 2 – Поддержка Microsoft (включая jQuery) – Исходный код открыт • MVCContrib – Проект сообщества по расширению возможностей MVC Framework 8 Запросы в MVC Framework Браузер /Product/List/2 Сервер /Product/Edit/3 List (View) ProductController (Controller) Product (Model) Edit (View) БД Жизненный цикл запроса Запрос Таблица маршрутов Контроллер Ответ (разметка) Представление Действие контроллера 10 Проект MVC Framework 2 Контроллер 3 Модель 4 Представление 1 Таблица маршрутизации ЛАБОРАТОРНАЯ РАБОТА СОЗДАНИЕ MVC ПРИЛОЖЕНИЯ 12 ASP.NET: MVC и WebForms? • ASP.NET – платформа, лежащая в основе MVC фреймворка • MVC и WebForms – два подхода к созданию веб-приложений на платформе ASP.NET • Возможность выбора – это хорошо! 13 ASP.NET предоставляет инфраструктуру • • • • • • • • • Модель провайдеров Механизмы кеширования Шаблоны страниц Состояние сеансов пользователей Обработчики страниц Управление клиентским кодом Управление данными Контекст запроса и ответа И другое... 14 Web Forms • Хранение состояния между обращениями на сервер • Компонентная модель серверных элементов управления • События элементов управления • Широкая поддержка графической и декларативной разработки • Расширяемость «за рамками» сложна 15 MVC Framework • • • • • • Разделение логики и представления Прозрачность обработки запроса Легковесные объекты Простое тестирование Отчуждаемые компоненты Широкие возможности по расширению 16 Процесс разработки с MVC Framework 1. 2. 3. 4. 5. Структуры данных - Модель Структура приложения - Маршрутизация Логика работы - Контроллеры Интерфейс пользователя - Представление Автоматическое тестирование - Счастье Ресурсы Технологии • Официальный сайт ASP.NET MVC FW – http://www.asp.net/mvc • Исходный код ASP.NET MVC FW – http://www.codeplex.com/aspnet • Проект MVCContrib – http://www.codeplex.com/mvccontrib 19 Инструменты • Visual Studio или Web Developer Express – http://VisualStudio2008.ru – http://microsoft.com/express/ru/vwd/ • SQL Server или SQL Server Express – http://microsoft.com/rus/SqlServer – http://microsoft.com/express/ru/sql/ • Шаблоны дизайна для MVC сайтов – http://www.asp.net/mvc/gallery 20 Удобный инсталлятор • Microsoft Web Platform Installer – www.microsoft.com/web/downloads/platform.aspx 21 Литература Литература • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Design Patterns • Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес - Приемы объектно-ориентированного проектирования. Паттерны проектирования 23 Литература • Judith Bishop - C# 3.0 Design Patterns • Мартин Фаулер - Рефакторинг. Улучшение существующего кода 24