Что такое ASP.NET Core

Что такое ASP.NET Core и почему на нём строят бэкенды банков, маркетплейсов и стартапов.

Суть: ASP.NET Core — это кроссплатформенный фреймворк от Microsoft для серверных приложений: веб-API, сайтов, микросервисов и фоновых сервисов. Он работает на Windows, Linux и macOS, компилируется в быстрый машинный код и считается одним из самых производительных веб-стеков в индустрии.

Когда вы открываете мобильное приложение банка и видите баланс, где-то на сервере крутится программа, которая приняла ваш HTTP-запрос, проверила токен, сходила в базу данных и вернула JSON. Эта программа — бэкенд. ASP.NET Core — один из главных инструментов, на котором такие бэкенды пишут. На нём работают части Stack Overflow, Microsoft, множество финтех-проектов и enterprise-систем по всему миру.

Раньше существовал «классический» ASP.NET, который жил только на Windows и был завязан на тяжёлый IIS. В 2016 году Microsoft выпустила полностью переписанный с нуля ASP.NET Core — открытый, кроссплатформенный и модульный. Сегодня актуальны версии .NET 8 (LTS, долгая поддержка) и .NET 9. Слово «Core» из названия фактически ушло, но в обиходе и в имени фреймворка осталось, чтобы отличать от старого ASP.NET.

Почему именно ASP.NET Core

Три причины, по которым его выбирают. Производительность: в бенчмарках TechEmpower он стабильно в верхней части таблицы, обгоняя многие Node.js и Python-стеки. Язык C#: строго типизированный, с богатой стандартной библиотекой, async/await «из коробки» и отличными инструментами (Visual Studio, Rider). Экосистема: Entity Framework Core для работы с БД, встроенный DI-контейнер, готовая аутентификация — многое уже есть в коробке.

Как работает под капотом

Когда запрос приходит на сервер, его сначала принимает встроенный веб-сервер Kestrel. Дальше запрос проходит по конвейеру обработки (middleware), попадает в ваш код, формируется ответ и уходит обратно клиенту. Схематично жизненный путь запроса выглядит так:

[Клиент/браузер]
      |
      v  HTTP-запрос
[Kestrel: веб-сервер]
      |
      v
[Конвейер middleware]
      |
      v
[Ваш код: эндпоинт/контроллер]
      |
      v  HTTP-ответ (JSON)
[Клиент/браузер]

Kestrel написан на C# и очень быстрый. В продакшене перед ним часто ставят обратный прокси (Nginx, IIS, YARP), но обрабатывает запросы именно Kestrel.

Частые ошибки

  • Путать старый ASP.NET и ASP.NET Core. Гайды для классического ASP.NET (Web Forms, Global.asax) к Core не подходят — это разные миры.
  • Думать, что нужен только Windows. Core отлично работает в Docker-контейнере на Linux, и в продакшене так чаще всего и деплоят.
  • Гнаться за свежей версией без LTS. Для боевых проектов берут LTS-версии (.NET 8), у них дольше поддержка и патчи безопасности.

Best practices

  • Для новых учебных и боевых проектов берите .NET 8 (LTS) или .NET 9 — старые туториалы под .NET Core 2.x/3.x устарели.
  • Сразу привыкайте к кроссплатформенности: разрабатывать можно на любой ОС, деплоить — в Linux-контейнер.
  • Различайте runtime (.NET, на чём всё крутится) и SDK (инструменты для сборки). На своей машине нужен SDK.

Где ASP.NET Core применяют на практике

Чтобы фреймворк не казался абстракцией, полезно увидеть, какие задачи он закрывает в реальных командах. На ASP.NET Core пишут публичные REST/GraphQL-API для мобильных и веб-клиентов, микросервисы, общающиеся между собой по HTTP или gRPC, фоновые обработчики (через BackgroundService и IHostedService), а также классические серверные сайты на Razor Pages и Blazor. Один и тот же стек покрывает крошечный сервис на пару эндпоинтов и крупную систему с десятками модулей — отличается лишь масштаб настройки.

Важная особенность платформы — единый хостинг (Generic Host): и веб-приложение, и фоновый воркер, и консольная утилита поднимаются через один и тот же механизм builder. Это значит, что навыки, которые вы получите в этом курсе (DI, конфигурация, логирование), переносятся на любой тип .NET-приложения, а не только на веб.

Экосистема и почему C# удобен для бэкенда

Сильная сторона .NET — целостность экосистемы. Зависимости ставятся через NuGet, тесты пишутся на xUnit/NUnit, работа с БД идёт через EF Core или Dapper, фоновые задачи — через Hangfire или встроенные сервисы, контейнеризация — через готовые Docker-образы Microsoft. Всё это поддерживается одной компанией и хорошо стыкуется между собой, что экономит время на интеграции «зоопарка» библиотек.

Сам язык C# тоже работает на бэкенд: строгая типизация отлавливает целый класс ошибок ещё на компиляции, async/await делает асинхронный код к БД и внешним сервисам читаемым, а record-типы и nullable reference types упрощают описание моделей и защищают от NullReferenceException. Для серверной разработки, где надёжность важнее экспериментальной краткости, эти свойства особенно ценны.

Итог: ASP.NET Core — современный, быстрый, кроссплатформенный фреймворк для бэкенда на C#. Дальше мы установим SDK, создадим первый проект и разберём его структуру.

Проверьте себя
1. Что из перечисленного верно про ASP.NET Core?
AРаботает только на Windows
BЭто кроссплатформенный фреймворк, работающий на Windows, Linux и macOS
CЭто язык программирования
DПодходит только для desktop-приложений
2. Какой встроенный веб-сервер обрабатывает запросы в ASP.NET Core?
AApache
BIIS Express
CKestrel
DNginx