Внутренее устройство фреймворка ASP.NET Core

Какое внутренее устройство фреймворка ASP.NET Core для C#?

Я искал по этому поводу информацию, но так ничего толкового не нашел. Везде говорят про архитектуру самого проекта. Но из каких модулей состоит сам фреймворк, и в какой иерархии они находятся? Если есть какие-то ресурсы, описывающие это, буду крайне признателен за ссылку.


Ответы (1 шт):

Автор решения: Uranus

Архитектура ASP.NET Core построена на основе следующих ключевых компонентов:

  1. Kestrel: встроенный веб-сервер, предназначенный для обработки HTTP-запросов. Он обеспечивает высокую производительность и может использоваться как самостоятельно, так и в связке с другими веб-серверами, такими как IIS и Nginx (When to use Kestrel with a reverse proxy). Рекомендую к прочтению: Configure options for the ASP.NET Core Kestrel web server.
  2. Middleware: конвейер компонентов, через который проходят входящие HTTP-запросы и исходящие ответы. Каждый компонент может обрабатывать запрос, передавать его следующему или завершать обработку. Это позволяет гибко настраивать обработку запросов и добавлять функциональность, такую как аутенитификация, логирование и обработка ошибок. Подробнее про это можно почитать в официальной документации: ASP.NET Core Middleware.
  3. Routing: компонент, отвечающий за сопоставление входяших запросов с соответствующими обработчиками, такими как контроллеры или конечные точки Razor Pages. Он позволяет определять шаблоны URL и управлять навигацией внутри приложения. Подробнее про это можно почитать в официальной документации и других ресурсах:
  4. Model Binding: механизм, который автоматически преобразует данные из HTTP-запросов в объекты C#, упрощая обработку форм и данных, отправленных клиентом. Подробнее про это можно почитать в официальной документации: Model Binding in ASP.NET Core.
  5. Filters: позволяют выполнить код до или после определенных этапов обработки запроса, таких как выполнение действия контроллера или привязка модели. Они полезны для реализации таких задач, как авторизация, кэширование, обработка ошибок и логирование. Подробнее про это можно почитать в официальной документации: Filters in ASP.NET Core. Чуть попроще тема фильтров раскрыта здесь: Фильтры действий, или Как просто улучшить читаемость кода.
  6. Razor View Engine: система для создания динамических представлений с использованием синтаксиса Razor, позволяющая смешивать C# и HTML для генерации контента на стороне сервера. Подробнее про это можно почитать в официальной документации: Razor syntax reference for ASP.NET Core, Introduction to Razor Pages in ASP.NET Core.

Эти компоненты организованы в иерархию, где Kestrel находится на нижнем уровне, обрабатывая низкоуровневые HTTP-запросы. Над ним располагается конвейер Middleware, через который проходят все запросы и ответы. Компоненты, такие как Routing, Model Binding и Filters, работают на более высоком уровне, обеспечивая обработку запросов и генерацию ответов. Для более глубокого понимания внутренней архитектуры ASP.NET Core рекомендуется ознакомиться со следующими ресурсами:

→ Ссылка