Слайды лекций В. К. Толстых

Download Report

Transcript Слайды лекций В. К. Толстых

Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных
технологий физического факультета Донецкого национального университета
Технологии
разработки Internetприложений
ASP.NET MVC Framework –
новая платформа Web-приложений
вместо ASP.NET Web-Forms
проф. В.К.Толстых, www.tolstykh.com
Схема MVC (Model-View-Controller)
Архитектура (шаблон) ASP.NET MVC Framework делит пользовательский интерфейс на три разных объекта:
1.
2.
Контроллер получает входные данные (HTTP-запрос) и обрабатывает их;
Модель содержит бизнес-логику приложения. В ней находятся классы, которые манипулируют с
данными, записывают их в базу… Модель не зависит ни от Представления ни от Контроллера;
3.
Представление оформляет полученный результат в HTML-коде вида <%= ViewData["Name"] %>.
Здесь MVC больше похож на классический ASP, чем на ASP.NET. Представления MVC отвечают только
за порождение выходных данных. Обработчики событий и сложные элементы управления (как в Webформах) им попросту ни к чему.
Ход обработки запросов для такого шаблона показан на рисунке:
Рассматриваемая архитектура подразумевает, что изменения в любом из компонентов оказывают минимальные
воздействия на остальные части.
Результат применения MVC
• Уменьшается зависимость между частями приложения, что увеличивает его гибкость;
• Появляется возможность разрабатывать тесты для компонентов приложения, т.е. использовать технику
разработки через тестирования (Test-Driven Development или сокращенно TDD).
Ошибки, при использовании MVC
Перегруженный Контроллер
Некоторые разработчики ошибочно трактуют Модель только как средство доступа к базе данных. В
результате бизнес-логика переходит в Контроллер, что в корне противоречит архитектуре MVC. Стоит
помнить, что Модель это не только доступ к данным, но и логика приложения, проверка получаемых от
пользователя данных и т. д. В свою очередь, Контроллер – связующее звено между ней, Представлением
и пользователем.
Перегруженная Модель
Другим заблуждением является попытка перенести всю логику в Модель. Подобную ошибку часто можно
встретить при разработке Web-приложений. В этом случае Представление стараются превратить в
простой шаблон, доступный для редактирования любому верстальщику. При этом логика элементов
пользовательского интерфейса из Представлений перемещается в Модель или, иногда, в Контроллер.
Данный подход ошибочен с точки зрения архитектуры MVC, т.к. нарушается четкое разделение компонентов:
Модель становится зависима от Представления. При правильном подходе, Логика пользовательского
интерфейса должна находиться в Представлениях. Но при этом важно корректно разделить ее и бизнеслогику.
MVC Web Application
MVC Framework не предполагает использование классических web-форм и web-элементов управления, в
нем отсутствуют такие механизмы как обратные вызовы (postbacks) и состояние представления
(viewstate). MVC Framework предлагает использование URL-mapping и архитектуру REST1 в качестве
модели запросов, что положительно повлияет на поисковую оптимизацию web-проектов.
MVC Framework предложил для разработчиков ASP.NET новый стиль, ориентированный на качество
клиентского кода. Генерируемый MVC код страниц не содержит ничего автоматически создаваемого, как в
классическом ASP.NET, здесь нет раздутых идентификаторов, нет огромных viewstate, написание
клиентских скриптов упрощено в связи с тем, что код страницы представляет собой чистый, созданный
самим программистом HTML.
______________________________________
1
- Каждая единица информации однозначно определяется URL
Создание MVC Web Application
Будем использовать Microsoft Visual Studio 2008. Выбираем
File -> New -> Project… ASP.NET MVC Web Application
Получаем проект в виде, показанном на рисунке.
Директории:
/Properties — стандартная директория для Web Application, содержит
настройки проекта.
/References — ссылки на другие сборки, проекты и т.д.
/App_Data — специальная директория для хранения данных,
Content — в этой директории мы будем хранить изображения, стили и
тому подобное. Весь статический контент сайта,
/Controllers — классы, отвечающие за компоненты Controller,
Models — классы с логикой проекта,
Views — непосредственно пользовательский интерфейс приложения. В
этой директории создаются поддиректории для каждого контроллера
(/Views/Home в нашем случае). И уже в них по .aspx-странице для
каждого из методов котроллера,
Views/Shared — содержит то, что может пригодиться для всех
контроллеров, например MasterPages и UserControls.
Прощайте, Web-формы?
Web-формы — это хорошо проработанная технология, и Майкрософт будет по-прежнему поддерживать и
совершенствовать ее. Есть немало приложений, в которых Web-формы прекрасно работают. К примеру,
если при создании приложения, выдающего отчеты по базам данных, использовать Web-формы, то на
него уйдет гораздо меньше времени, чем при работе в платформе MVC. Кроме того, Web-формы
поддерживают широчайший набор элементов управления со сложной структурой.
Когда лучше предпочесть MVC Web-формам? Это во многом зависит от конкретных требований и ваших
личных предпочтений. Вам надоело бороться с URL-адресами, добиваясь нужной их формы? Вам нужно
средство модульного тестирования интерфейса? И в том, и в другом случае стоит, наверное, обратиться к
платформе MVC. Вам приходится отображать большое количество данных, вы используете сложные
сетки и деревья? Тогда лучше остановить свой выбор на Web-формах.
Со временем платформа MVC, вероятно, догонит Web-формы по уровню сложности элементов управления,
но вряд ли когда-то с ней будет так же просто начать работать, как с Web-формами, в которых
большинство действий сводится к перетаскиванию элементов. Но между тем, платформа ASP.NET MVC
предлагает Web-разработчикам совершенно новый способ создания приложений в Microsoft .NET
Framework. В ней есть широкие возможности тестирования, в ней делается упор на HTTP, она отлично
масштабируется. Она станет отличным дополнением к Web-формам в том случае, когда разработчику
требуется полный контроль над Web-приложением.
Источники
•
Крис Таварес (Chris Tavares). ASP.NET MVC: Создание веб-приложений без
форм. — MSDN Magazine, 2008.
•
ASP.NET MVC на реальном примере. Теория и вступление.
•
ASP.NET MVC 3 в деталях.