
- •7. Разработка на asp.Net. MasterPage, динамические компоненты, ajax, asp.Net mvc
- •7.1. Использование MasterPage
- •7.2. Динамическое создание элементов управления
- •7.3. Навигация по сайту
- •7.3.1. Карта сайта
- •7.3.2. Использование элементов управления Menu и SiteMapPath
- •7.3.2.1. Использование Menu
- •7.3.2.2. Использование SiteMapPath
- •7.4. Использование компонент для отображения данных
- •7.4.1. Компонент GridView
- •7.4.1.1. Привязка данных
- •7.4.1.2. Форматирование отображаемых данных
- •7.4.1.3. Изменение и удаление данных
- •7.4.1.4. Шаблоны столбцов
- •7.4.1.5. Сортировка
- •7.4.1.5.1. Процесс сортировки GridView
- •7.4.1.6. Разбиение по страницам
- •7.4.1.7. События GridView
- •7.4.2. Компонент DataList
- •7.6. Ajax
- •7.6.1. Преимущества использования asp.Net ajax
- •7.6.2. Архитектура ajax в asp.Net
- •7.6.3. Клиентская архитектура технологии ajax
- •7.6.3.1. Компоненты
- •7.6.3.2. Сетевое взаимодействие
- •7.6.3.3. Базовые службы
- •7.6.3.4. Глобализация
- •7.6.4. Серверная архитектура ajax
- •7.6.4.1. Поддержка сценариев
- •7.6.4.2. Локализация
- •7.6.4.3. Веб-службы
- •7.6.4.4. Службы приложений
- •7.6.4.5. Серверные элементы управления
- •7.6.5. Пример использования ajax
- •7.7. Asp.Net mvc
- •7.7.1. Общие сведения
- •7.7.2. "Hello World" на asp.Net mvc
- •7.8. Ключевые термины
- •7.9. Краткие итоги
7.7. Asp.Net mvc
7.7.1. Общие сведения
В.NET Framework 3.5 появилась новая технология – ASP.NET MVC. Ее отличие от обычного ASP.NET заключается в том, что за основу взят не шаблон проектирования PageController, когда создается множество страниц (часто для любого действия создается своя страница), а FrontController, когда создается небольшое количество классов, способных обрабатывать запросы и генерировать разметку страницы (или при использовании AJAX части страницы) исходя из переданных данных [17, 18].
Примечание: Оба подхода имеют одинаковую выразительную мощность и преимущественно отличаются подходом к разработке. Так в классическом ASP.NET также можно реализовать поход, основанный на controller'ах, когда весь код страницы будет динамически генерироваться в методе Page_Load(). При этом те преимущества, которые предоставляет MVC можно реализовать и в ASP.NET. Некоторые примеры этого будут показаны в следующих лекциях.
ASP.NET MVC является реализаций шаблона Model-View-Controller под платформу .NET. Рассмотрим основные принципы его работы.
Архитектурный шаблон Model-View-Controller подразумевает под собой разделение приложения на три основных компонента: Model, View и Controller. Каждый из этих компонентов отвечает за свои задачи:
Model – это бизнес-логика разрабатываемого приложения. В ней находятся классы, которые отвечают за данные, манипуляцию данными, а так же за взаимодействие между самими сущностями. Если приложение небольшое, то работа с данными проводится обычно здесь. Если же проект достаточно крупный, содержит много логики, то работа с данными и бизнес-логика разносятся по отдельным проектам.
View отвечает за взаимодействие с пользователем (UI). Посредством этого компонента будут выводиться данные клиенту, реализовываться интерфейс для их редактирования и т.п.
Controller – это связующее звено между первыми двумя компонентами. Controller получает данные о запросе к серверу, обрабатывает эти данные (например, получает значения из отправленной формы) и передает их в Model. После обработки или получения данных он выбирает, каким же именно способом отобразить данные клиенту (нужный View).
В результате получается полный контроль над выводимым HTML и более "легкие" приложения. Также значительно упрощается тестирование приложений, так как теперь можно легко писать Unit Test'ы для модели и контроллера.
В таком подходе отсутствуют различные серверные обработчики событий, вместо них используются соответствующие контролеры, которые распознают действия пользователя и вызывают необходимый код для работы с моделью.
Также стоит отметить, что в таком подходе отсутствует ViewState, так как больше нет необходимости хранить состояния страниц, чтобы их повторно воссоздавать на сервере. Нет обработчиков событий, нет ViewState, нет Drag'n'Drop контролов на форму.
Еще одна полезная особенность – нет необходимости реализовывать URL-Rewriting (использования "дружественных" и удобных ссылок, так как, например, на сайте lenta.ru: http://lenta.ru/news/2010/03/07/vision/). Для ASP.NET MVC такой подход является стандартным – весь путь определяет контроллер, который необходимо использовать на сервере (при этом последний уровень определят имя контроллера, а остальные – его месторасположение), а параметры передаются через HTTP POST.
MVC делит пользовательский интерфейс на три разных объекта: контроллер получает входные данные и обрабатывает их, модель содержит логику домена, представление оформляет полученный результат [19]. В контексте Веб-приложений входные данные – это HTTP-запрос. Ход обработки запросов показан на рис. 7.17.
В ASP.NET этот процесс выглядит иначе. Там входные данные отправляются на страницу (в представление). Представление отвечает и за обработку входных данных, и за отображение результата. В MVC эти обязанности разделяются.
Продемонстрируем особенности ASP.NET MVC на небольшом примере.