Гайдар Магдануров - ASP.NET MVC Framework

Тут можно читать онлайн Гайдар Магдануров - ASP.NET MVC Framework - бесплатно ознакомительный отрывок. Жанр: Интернет, издательство БХВ-Петербург, год 2010. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    ASP.NET MVC Framework
  • Автор:
  • Жанр:
  • Издательство:
    БХВ-Петербург
  • Год:
    2010
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-9775-0462-1
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Гайдар Магдануров - ASP.NET MVC Framework краткое содержание

ASP.NET MVC Framework - описание и краткое содержание, автор Гайдар Магдануров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Рассмотрены основные принципы и возможности технологии ASP.NET MVC Framework и показаны способы ее практического использования при разработке веб-приложений. Описаны преимущества подхода разработки MVC и рассмотрена структура MVC-приложения. Приведено сравнение технологии WebForms и MVC Framework и рассмотрены вопросы их совмещения.
Описаны модель и доступ к данным (технологии LINQ, Entity Framework и др.), контроллеры, представление и интерфейс приложения, механизмы маршрутизации и Ajax-функциональность. Уделено внимание вопросам тестирования веб-приложений. Рассмотрены особенности применения ASP.NET MVC 2 в Visual Studio 2010.
Для программистов

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

ASP.NET MVC Framework - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Гайдар Магдануров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

7. Определение действия может быть изменено в случае, когда пользователь определил для действий атрибуты типа ActionMethodSelectorAttribute. Для каждого такого атрибута вызывается метод IsValidForRequest, которому передается набор параметров типа ControllerContextи MethodInfo. Метод IsValidForRequestвозвращает результат в виде bool, который определяет, подходит ли выбранное действие для исполнения в контексте запроса.

8. Выполнение действия может быть отменено, изменено или пропущено, если пользователь определил для действия атрибуты типа FilterAttibute. Такие атрибуты могут использоваться для определения прав доступа, кэширования результатов, обработки исключений.

9. В случае когда для действия определены атрибуты типа ActionFilterAttribute, то выполнение действия может быть изменено таким атрибутом на следующих этапах: перед выполнением действия, после выполнения действия, перед исполнением результата или после исполнения результата действия.

10. В случае когда Actioninvokerбыл специально переопределен, то после вызова действия результат действия передается методу CreateActionResultсвойства Actioninvoker, который волен переопределить возвращаемый результат действия и вернуть результат типа ActionResult.

11. В случае, когда Actioninvokerне был переопределен, действие должно вернуть результат выполнения в виде ActionResult.

12. Для результата типа ActionResultвызывается метод ExecuteResult, который осуществляет отображение результата для контекста запроса. Создав свой вариант класса, наследующий ActionResultи реализующий ExecuteResult, можно переопределить действие и возвращать результат в нужном виде, например, формировать RSS-ленту.

Рассмотрим все шаги, относящиеся к контроллерам и действиям, более подробно. Для этого выделим основные темы:

□ фабрика контроллеров;

□ действия, фильтры и атрибуты;

□ механизм Model Binding.

Фабрика контроллеров

После того как внутренний механизм MVC получит запрос, обработает таблицу маршрутизации и подберет необходимый маршрут, в дело вступает фабрика контроллеров. По умолчанию создается и используется экземпляр фабрики контроллеров типа DefaultFactoryController. Для реализации своего варианта поведения фабрики контроллеров разработчик может реализовать свой класс, наследующий класс DefaultFactoryController.

Фабрика контроллеров — это механизм, созданный с одной целью — создавать экземпляры контроллеров. В ASP.NET MVC фабрика контроллеров — это один из механизмов, который позволяет настроить поведение механизма MVC под себя, расширить функционал, предоставить разработчику возможность гибкой настройки действия MVC.

Фабрика контроллеров в ASP.NET реализует интерфейс IControllerFactory, который содержит всего два метода:

public interface IControllerFactory {

IController CreateController(RequestContext requestContext,

string controllerName);

void ReleaseController(IController controller);

}

Здесь CreateControllerдолжен создавать экземпляр контроллера, а ReleaseController— разрушать его или проводить какие-то другие действия после завершения работы контроллера. Вы можете создать свою фабрику контроллеров, реализовав этот интерфейс. Но более простым способом расширения фабрики является ее реализация с помощью наследования от класса DefaultFactoryController.

Для примера рассмотрим такую, вполне возможную задачу, решить которую позволит фабрика контроллеров:

□ необходимо создать механизм, который позволит ограничивать создание определенных контроллеров на основе "черного списка";

□ решение на базе маршрутов таблицы маршрутизации не может нас удовлетворить, поскольку создание маршрутов производится через исполняемый код, который по каким-то причинам не может быть модифицирован для загрузки маршрутов из внешнего источника;

□ решение на базе маршрутов не может нас удовлетворить в связи с тем, что у нас много универсальных маршрутов, которые затрагивают сразу много контроллеров;

□ требуется возможность работать с "черным списком" в виде редактирования определенного файла для возможности разделения и предоставления прав к нему.

Согласно этим требованиям создадим фабрику контроллеров, которая позволит нам ограничивать выполнение контроллеров по их именам через XML-файл "черного списка". Вот пример такого файла:

Как можно увидеть, данным файлом мы хотели бы заблокировать выполнение контроллеров AccountControllerи AdminController.

Реализуем фабрику контроллеров, наследуя класс DefaultFactoryController:

public class ControllerFactory : DefaultControllerFactory {

protected override IController

GetControllerInstance(Type controllerType)

{

if (controllerType == null)

return base.GetControllerInstance(controllerType);

XmlDocument xdoc = new XmlDocument();

string blacklistPath =

HttpContext.Current.Server.MapPath("~/blacklist.xml");

xdoc.Load(blacklistPath);

XmlNodeList nodes = xdoc.GetElementsByTagName("blacklist");

foreach (XmlNode node in nodes[0].ChildNodes)

{

if (node.Attributes["typeName"].Value == controllerType.Name)

throw new HttpException(404, "Страница не найдена");

}

return base.GetControllerInstance(controllerType);

}

}

Как вы можете видеть, единственным методом нашего класса является реализация перегруженного метода GetControllerInstanceкласса DefaultControllerFactory. В нем мы реализуем следующую последовательность действий:

1. Проверяем, не передается ли в фабрику контроллера типа контроллера в виде null, если это так, то завершаем выполнение вызовом базового метода для выполнения действия по умолчанию.

2. Загружаем наш XML-файл с "черным списком" и ищем в нем имя типа контроллера, который запрошен для создания.

3. Если в "черном списке" существует запись о блокировании данного контроллера, то возвращаем ответ на запрос в виде 404 ошибки HTTP "Страница не найдена".

4. Если контроллер отсутствует в "черном списке", то мы выполняем базовое действие по умолчанию для поиска и создания необходимого контроллера.

Для того чтобы наш код заработал, мы должны зарегистрировать нашу фабрику контроллеров. Функцию регистрации выполняет метод SetControllerFactoryкласса controllerBuilder. Добавим его вызов в файл Global.asax:

protected void Application_Start()

{

RegisterRoutes(RouteTable.Routes);

ControllerBuilder.Current.SetControllerFactory( new ControllerFactory());

}

После этого попробуем запустить наше приложение. Главная страница запустится нормально, т. к. она создается с помощью контроллера HomeController. Но если мы попробуем перейти на страницу входа, регистрации или административную страницу, то увидим стандартное сообщение браузера о том, что страница не была найдена.

Другим, пожалуй, самым распространенным вариантом использования фабрики контроллеров является реализация архитектурного паттерна Инверсия контроля (Inversion of Control), который в данном применении позволяет в приложении уменьшить зависимость и ослабить связи между контроллерами. Для реализации такого механизма используются сторонние библиотеки, вроде Unity Application Blocks от Microsoft, Spring.NET или Ninject .

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Гайдар Магдануров читать все книги автора по порядку

Гайдар Магдануров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




ASP.NET MVC Framework отзывы


Отзывы читателей о книге ASP.NET MVC Framework, автор: Гайдар Магдануров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x