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

Маршрутизация (Routing)
Маршрутизация в ASP.NET Core MVC 3 - это процесс сопоставления входящих запросов с конечными точками.
В MVC доступны два вида маршрутизации:
- традиционная маршрутизация объявляется централизованно для всего приложения,
- маршрутизация на основе атрибутов применяется непосредственно к конкретному контроллеру или методу действия через атрибут. Подробнее тут

.NET Core 3 использует новую систему маршрутизации конечных точек, которая впервые появилась в .NET Core 2.2, и обеспечивает большую гибкость в обработке запросов. В более ранних версиях был компонент промежуточного ПО, называемый маршрутизатором (см. картинку ниже). Он передавал запрос и данные в компонент MVC, называемый обработчиком маршрута. Обработчик использовал эти данные, чтобы решить, какой метод действия контроллера должен обрабатывать запрос. Затем маршрутизатор выполнял выбранный метод действия.

Это приводило к нескольким проблемам:
1. Ни один из других компонентов промежуточного ПО не знал, какая конечная точка или метод действия будет обрабатывать запрос до того, как он будет обработан MVC. Это создавало трудности для компонентов промежуточного ПО, которые должны анализировать маршруты, например, компонентов авторизации.
2. Этот рабочий процесс также тесно связывал MVC с обязанностями по маршрутизации, вместо того, чтобы отвечать только за генерацию ответа.

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

Конечные точки - это классы, содержащие имя конечной точки, паттерн пути, метаданные и делегат запроса, который представляет собой функцию, используемую для генерации ответа на входящий запрос. В контексте MVC делегат представляет собой оболочку вокруг метода, который создаёт экземпляр контроллера и выполняет выбранный метод действия. Конечные точки создаются при старте приложения классом, который называется источник данных конечных точек методов действия контроллеров (Controller Action Endpoint Data Source). Он обходит все контроллеры и составляет список всех возможных конечных точек. Также он хранит коллекцию зарегистрированных маршрутов и может сопоставлять маршруты с конечными точками.

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

Источник:
https://app.pluralsight.com/library/courses/aspnet-core-3-mvc-request-life-cycle/
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 →