Что такое 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, создадим первый проект и разберём его структуру.