TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.76K subscribers
Post #797 1.32K
День шестьсот пятьдесят второй. #ЗаметкиНаПолях
Жизненный цикл запроса в
ASP.NET Core MVC 3. Продолжение
Начало
Промежуточное ПО
Маршрутизация

Инициализация контроллера
Наконец запрос попадает во фреймворк MVC. Здесь под фреймворком понимается набор контроллеров с методами действий, фильтров и представлений Razor.
Для начала рассмотрим два важных класса.

Первый называется инициатором действий контроллера (Controller Action Invoker) и наследуется от второго абстрактного класса – инициатора ресурсов (Resource Invoker). Эти классы управляют конвейером MVC (см. картинку ниже). Делегат запроса в промежуточном ПО конечных точек передаёт данные контекста HTTP-запроса и выбранного метода действия в инициатор действий контроллера и его родительский класс. Логика инициатора ресурсов сначала выполняет фильтры авторизации, ресурсов и промежуточного ПО, чтобы понять, нужно ли вообще создавать контроллер. Если нужно, фабрика контроллеров, использует контекстные данные, предоставленные вызывающей стороной, для создания экземпляра контроллера. Затем инициируется поток исполнения соответствующего метода действия этого экземпляра контроллера. Когда метод действия возвращает результат, инициатор ресурсов выполняет результат для генерации ответа.

Фильтры
Фильтры - позволяют внедрять пользовательский код на различных этапах жизненного цикла запроса. MVC «из коробки» включает несколько встроенных фильтров, но мы также можем легко написать свои. Выполнение фильтров управляется инициатором действий контроллера, который вставляет их код в различные этапы конвейера MVC. Их место в жизненном цикле запроса определяется их типом:
1. Фильтры авторизации, ресурсов и промежуточного ПО выполняются перед созданием контроллера. То есть эти фильтры могут решить, должен ли запрос отправляться дальше по конвейеру или его следует прервать (например, при неудачной авторизации).
2. Фильтры действий и результатов действий запускаются до и после выполнения метода действия и результата соответственно.
3. Фильтры исключений могут выполняться в любом месте конвейера.

Фильтры постоянно добавлялись в MVC с ранних версий, поэтому в .NET Core 3 их довольно много. С фильтрами авторизации, действий и исключений всё более-менее понятно. Рассмотрим подробнее редко используемые фильтры ресурсов и промежуточного ПО.

Фильтры ресурсов реализуют интерфейс IResourceFilter, определяющий два метода OnResourceExecuting и OnResourceExecuted. Фильтры ресурсов уникальны тем, что они оборачивают выполнение большей части конвейера MVC. Это первое место для внедрения пользовательской логики после авторизации (OnResourceExecuting) и последнее место перед тем, как MVC вернёт ответ (OnResourceExecuted). В некотором смысле фильтры ресурсов похожи на промежуточное ПО внутри конвейера MVC. С их помощью можно выполнять кэширование или управлять поведением привязки модели.

Фильтры промежуточного ПО позволяют запускать стандартные компоненты промежуточного ПО внутри конвейера MVC. Есть две основные причины их использования:
- повторное использование логики компонента промежуточного ПО;
- предоставление компоненту промежуточного ПО большего объёма данных контекста изнутри MVC, чем это возможно на этапе выполнения промежуточного ПО.
Фильтры промежуточного ПО выполняются после фильтров авторизации, но на той же общей стадии, что и фильтры ресурсов.

Продолжение следует…

Источник:
https://app.pluralsight.com/library/courses/aspnet-core-3-mvc-request-life-cycle/
  • 👍 1
More from @netdeveloperdiary
  1. Oct 8, 2026День 2808. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Начало В ИТ есть се…
  2. Oct 7, 2026День 2807. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Окончание Нач…
  3. Oct 6, 2026🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собес…
  4. Oct 6, 2026День 2806. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Начало Больши…
  5. Oct 5, 2026День 2805. #ЧтоНовенького #NET11 Аргументы в Выражениях Коллекций в C#15 В C#15 реализован…
  6. Oct 4, 2026День 2804. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →