Открыть сервис

ASP.NET

ASP.NET — это веб-фреймворк с открытым исходным кодом, разработанный компанией Microsoft для создания динамических веб-сайтов, веб-приложений и веб-API. Он является преемником технологии ASP (Active Server Pages) и представляет собой часть платформы .NET, позволяя разработчикам использовать языки программирования, поддерживаемые средой CLR (Common Language Runtime), прежде всего C# и Visual Basic .NET. ASP.NET предоставляет модели программирования, такие как Web Forms, MVC (Model-View-Controller), Web Pages и ASP.NET Core, для построения серверных веб-приложений.

История

Ранние версии (ASP.NET 1.0 — 4.x)

Первая версия ASP.NET была выпущена в январе 2002 года вместе с платформой .NET Framework 1.0. Она пришла на смену классической технологии ASP (Active Server Pages), которая использовала интерпретируемый язык VBScript. ASP.NET 1.0 представила модель Web Forms, основанную на событиях и серверных элементах управления, что позволяло разработчикам, привыкшим к разработке Windows Forms, создавать веб-приложения с минимальным знанием HTML и HTTP.

В 2005 году вышла версия ASP.NET 2.0, которая добавила мастер-страницы (Master Pages), провайдеры членства (Membership Providers) и навигацию (SiteMap). Версия 3.5 (2007) интегрировала LINQ и ASP.NET AJAX. Версия 4.0 (2010) представила расширения URL (URL Routing) и улучшенную поддержку динамических данных. Последняя версия в рамках классического .NET Framework — ASP.NET 4.8 (2019) — остаётся поддерживаемой, но не получает новых функций.

ASP.NET MVC

В 2009 году Microsoft выпустила ASP.NET MVC 1.0 — альтернативную модель программирования, основанную на шаблоне Model-View-Controller. В отличие от Web Forms, MVC обеспечивала полный контроль над HTML, чёткое разделение кода (логика, представление, модель) и тестируемость. ASP.NET MVC развивался параллельно с Web Forms: версии 2 (2010), 3 (2011), 4 (2012) и 5 (2013) добавляли атрибуты маршрутизации, поддержку Web API и интеграцию с Bootstrap.

ASP.NET Core

В 2016 году Microsoft представила ASP.NET Core 1.0 — полностью переписанную, модульную и кроссплатформенную версию фреймворка. Она была построена с нуля на основе .NET Core (позже — .NET 5/6/7/8/9) и не наследует архитектуру Web Forms. ASP.NET Core объединил функциональность MVC, Web API и SignalR в единый фреймворк, оптимизированный для облачных сред и микросервисов. Ключевые версии:

  • ASP.NET Core 1.x (2016–2017) — начальная кроссплатформенная реализация.
  • ASP.NET Core 2.x (2017–2018) — добавление Razor Pages, упрощение конфигурации.
  • ASP.NET Core 3.x (2019) — переход на .NET Core 3, полная поддержка gRPC и Blazor Server.
  • ASP.NET Core 5/6/7/8/9 (2020–2024) — интеграция с единой платформой .NET (начиная с .NET 5), улучшение производительности, внедрение Blazor WebAssembly, минимальных API (Minimal APIs) и режима Native AOT.

Модели программирования

Web Forms

Web Forms — это модель, основанная на событиях и серверных элементах управления (Server Controls). Страница (.aspx) состоит из декларативной разметки и кода на C# или VB.NET (файл code-behind). Серверные элементы управления (например, <asp:Button>, <asp:GridView>) генерируют HTML и обрабатывают события на сервере. Модель использует ViewState для сохранения состояния между запросами. Web Forms была популярна в 2000-х годах, но критиковалась за избыточность, сложность тестирования и слабый контроль над HTML.

MVC (Model-View-Controller)

ASP.NET MVC разделяет приложение на три компонента:

  • Model — бизнес-логика и данные.
  • View — шаблоны представления (Razor-файлы .cshtml).
  • Controller — обработка запросов, взаимодействие с моделью и выбор представления.

MVC обеспечивает чистую архитектуру, поддержку модульного тестирования и полный контроль над HTML-разметкой. Маршрутизация (Routing) позволяет задавать шаблоны URL (например, /Products/Details/5). В ASP.NET Core MVC является частью единого фреймворка.

Razor Pages

Razor Pages — упрощённая модель, введённая в ASP.NET Core 2.0. Каждая страница представляет собой комбинацию Razor-шаблона (.cshtml) и файла кода (.cshtml.cs) с методами-обработчиками (OnGet, OnPost). Razor Pages ориентирована на сценарии, где не требуется полная архитектура MVC (например, небольшие сайты, формы). Она поддерживает привязку моделей (Model Binding) и валидацию.

Blazor

Blazor — технология для создания интерактивных веб-интерфейсов на C# вместо JavaScript. Существует два режима:

  • Blazor Server — код выполняется на сервере, UI обновляется через SignalR-соединение.
  • Blazor WebAssembly — код выполняется в браузере на WebAssembly (WASM), загружается как статический файл.

Blazor позволяет использовать компонентный подход, аналогичный React или Angular, но на C#. С .NET 8 Blazor поддерживает потоковую отрисовку (Streaming Rendering) и гибридные режимы.

Minimal APIs

Minimal APIs (с ASP.NET Core 6) — это упрощённый способ создания HTTP-API без контроллеров. Код пишется в файле Program.cs с использованием лямбда-выражений:

``csharp var app = WebApplication.Create(); app.MapGet("/hello", () => "Hello World"); app.Run(); ``

Minimal APIs подходят для микросервисов, простых REST-сервисов и прототипов.

Архитектура и компоненты

HTTP-конвейер (Middleware)

ASP.NET Core использует конвейер компонентов middleware для обработки запросов. Каждый компонент может выполнять действия до и после следующего компонента. Типичный конвейер включает:

  • Обработку статических файлов (Static File Middleware).
  • Аутентификацию (Authentication Middleware).
  • Маршрутизацию (Routing Middleware).
  • Обработку исключений (Exception Handler Middleware).

Внедрение зависимостей (DI)

ASP.NET Core имеет встроенный контейнер DI (Dependency Injection). Сервисы регистрируются в Program.cs и автоматически внедряются в контроллеры, страницы и middleware. Поддерживаются три времени жизни: Transient, Scoped, Singleton.

Конфигурация и окружение

Настройки приложения хранятся в файлах appsettings.json, переменных окружения, командной строке или секретах (Secret Manager). ASP.NET Core поддерживает профили окружения (Development, Staging, Production) и условную загрузку конфигурации.

Аутентификация и авторизация

ASP.NET Core предоставляет гибкие механизмы аутентификации: куки, JWT-токены, OAuth 2.0, OpenID Connect. Встроенная поддержка Identity Framework позволяет управлять пользователями, ролями и правами доступа. Авторизация реализуется через атрибуты ([Authorize]) и политики (Policy-based Authorization).

Производительность и масштабирование

Kestrel

Kestrel — кроссплатформенный веб-сервер, встроенный в ASP.NET Core. Он оптимизирован для высоких нагрузок и может работать за обратным прокси (IIS, Nginx, Apache). В тестах производительности Kestrel демонстрирует пропускную способность, сопоставимую с Node.js и Go.

Native AOT

Начиная с .NET 8, ASP.NET Core поддерживает компиляцию Native AOT (Ahead-of-Time). Приложение компилируется в нативный машинный код, что уменьшает время запуска, потребление памяти и размер образа. Native AOT особенно полезен для бессерверных вычислений (Azure Functions) и контейнеров.

Кэширование

ASP.NET Core поддерживает кэширование на уровне памяти (IMemoryCache), распределённое кэширование (Redis, SQL Server) и кэширование ответов (Response Caching). Атрибут [ResponseCache] позволяет управлять кэшированием на стороне клиента и прокси.

Применение

ASP.NET Core широко используется для создания:

  • Веб-сайтов и порталов — от корпоративных сайтов до интернет-магазинов.
  • REST API и микросервисов — благодаря Minimal APIs и поддержке gRPC.
  • Реальных приложений (Real-time) — через SignalR для чатов, уведомлений, игр.
  • SPA-приложений — в сочетании с Blazor WebAssembly или в качестве бэкенда для React/Angular.
  • Облачных решений — интеграция с Azure, AWS, Google Cloud.

Сравнение с другими фреймворками

ХарактеристикаASP.NET CoreSpring Boot (Java)Django (Python)Express.js (Node.js)
ЯзыкC#JavaPythonJavaScript
ПроизводительностьВысокаяВысокаяСредняяВысокая
ТипизацияСтатическаяСтатическаяДинамическаяДинамическая
Экосистема.NET, NuGetSpring, MavenDjango ORM, DRFnpm, Express
КроссплатформенностьДаДаДаДа
Облачные возможностиВстроенныеШирокиеОграниченныеОграниченные

Интересные факты

  • ASP.NET является одним из основных фреймворков для разработки веб-приложений в корпоративной среде Microsoft, включая такие продукты, как Microsoft Dynamics 365 и Azure Portal.
  • Blazor WebAssembly позволяет запускать C#-код в браузере без плагинов, используя стандарт WebAssembly.
  • ASP.NET Core входит в пятёрку самых быстрых веб-фреймворков по результатам бенчмарков TechEmpower.

Источники

  • Документация Microsoft: «ASP.NET documentation» (learn.microsoft.com).
  • Троелсен Э., Джепикс Ф. «Язык программирования C# 7 и платформы .NET и .NET Core».
  • Фримен А. «ASP.NET Core 5.0 для профессионалов».
  • Официальный репозиторий ASP.NET Core на GitHub (github.com/dotnet/aspnetcore).
  • Бенчмарки TechEmpower Web Framework Benchmarks (techempower.com/benchmarks).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →