Привет! Сегодня разберем два подхода в ASP.NET. Blazor и классическую архитектуру MVC (Model‑View‑Controller). В отличие от обсуждений вроде «Java vs C++», эта тема менее спорная, но очень полезная для понимания современной веб‑разработки на .NET.

Что за Blazor?

Blazor — это относительно новая технология (появилась несколько лет назад), предназначенная для разработки SPA‑приложений. Она позволяет создавать веб‑интерфейсы на HTML, но вместо JavaScript для логики вы пишете код на C#.

Важно: C# не компилируется напрямую в JavaScript. Вместо этого используется технология Razor — синтаксис для связывания HTML и C# в одном компоненте.

Blazor поддерживает две модели исполнения кода. Blazor Server (выполняется на сервере, клиент отправляет события через SignalR, UI обновляется по веб‑сокету) и Blazor WebAssembly (выполняется в браузере, приложение работает автономно, не требуя постоянного соединения с сервером).

Что в том, что в другом варианте, Blazor использует компонентную архитектуру и его основной единицей интерфейса является компонент (как, например, в React).

Каждый компонент содержит в себе HTML‑разметку и логику в одном файле.razor.

А что такое MVC?

MVC (он же Model‑View‑Controller) — это более традиционный подход к веб‑разработке на.NET, основанный на разделении ответственности с точки зрения архитектуры.

  • Model — данные и бизнес‑логика;

  • View — HTML‑представление;

  • Controller — обработка запросов и выбор модели/представления.

Эта архитектура хорошо подходит для классических многостраничных сайтов и веб‑приложений с серверным рендерингом.

Почему MVC все еще любят?

Многие очень любят архитектуру типа Model‑View‑Controller. Будь то Java с Spring или когда‑то давно — C++ с нативными GUI. Интересно, что MVC появился ещё в начале 1970-х в языке Smalltalk, и с тех пор используется как один из самых проверенных подходов к построению интерфейсов.

В ASP.NET MVC по‑прежнему используется синтаксис Razor для описания представлений, но при этом благодаря четкому разделению логики каждый слой может изменяться независимо, что дает гибкость и устойчивость проекту.

Взаимодействие с сервером

Важно понимать, что и Blazor, и MVC работают поверх ASP.NET как базовой платформы и используют его возможности вроде маршрутизации, работы с зависимостями, middleware и так далее, поэтому большую часть инфраструктуры вы имеете одинаковую, что в том, что в другом случае. Их отличия строятся на подходах к построению интерфейса и взаимодействию клиента с сервером.

В случае MVC, в котором браузер общается с сервером через обычные HTTP‑запросы, они отправляются на контроллер, контроллер вызывает нужную модель, выбирается представление и после этого сервер возвращает полноценный HTML‑документ, который заменяет текущую страницу. Это классическая схема. Дополнительно можно использовать JavaScript и AJAX, чтобы обновлять только части страницы. Но в этом случае разработчик сам пишет логику взаимодействия с сервером.

Blazor работает иначе (в формате Blazor Server). Здесь браузер устанавливает постоянное соединение через SignalR и на этот канал передаются события и разметка интерфейса. Далее в real‑time на сервере выполняется логика интерфейса, а браузер видит только дельта изменений в DOM, которые автоматически синхронизирует Blazor.

И важный момент. В этом случае JS‑код на клиенте есть, но он встроен в сам фреймворк и включает в себя встроенный JS‑адаптер, разработчику его писать не нужно, всю интерактивную логику он может писать на C#.

В целом, можно сказать, что Blazor, аналогично React, реализует виртуальный DOM, только синхронизация с сервером происходит через веб‑сокет.

Да, подобный обмен событиями создает постоянный поток сообщений между клиентом и сервером, поэтом для игр, визуализаций с высокой частотой обновлений и тяжелой графики Blazor Server не подойдет, но для типичного бизнес‑интерфейса с кнопками, формами, таблицами и CRUD нагрузка сравнима с классическим вебом и это вполне эффективно.

Blazor WebAssembly (клиентский Blazor)

Blazor можно запускать через WASM, в таком случае на клиент загружаются скомпилированные DLL вашего приложения,.NET Runtime и все используемые зависимости. Первый запуск может быть медленнее из‑за загрузки этих файлов, но последующие посещения кешируются. Приложение исполняется локально в браузере, но взаимодействие с DOM остается прежним, используется тот же механизм, что и в Blazor Server. Соединение SignalR локальное и будет работать внутри браузера.

Какие есть ограничения? В таком случае нет доступа к серверным ресурсам, код клиента можно декомпилировать (поэтому не храните в нем чувствительную бизнес‑логику или секреты), а вся клиентская логика должна быть ограничена интерфейсом и пользовательскими взаимодействиями.

Зато этот подход поддерживается всеми современными браузерами, быстрый, эффективный, легко дебажится и приложение изолировано в песочнице браузера.

Подводя итоги

Думаю, в будущем проекты на ASP.NET будут ориентированы скорее на Blazor Server, а в некоторых случаях даже на Blazor WASM, поскольку это снижает необходимость писать на JS, тем самым упрощая стек и позволяя писать интерактивную логику на C#.

Однако, едва ли можно сказать, что MVC полностью исчезнет, поскольку это архитектура, проверенная временем, удобна для классических приложений и многостраничных сайтов.

Пожалуй, можно сказать, что Blazor дополняет, а не заменяет MVC. Он ближе к опыту разработки десктопных приложений, но при этом добавляет компонентный подход, позволяет создавать гибридные приложения, где в одном проекте соединяются SPA и MVC. А еще он особенно эффективен при использовании Blazor WASM, поскольку создает минимальную нагрузку на сервер в таком случае.


Если вы хотите не просто понимать разницу между Blazor и MVC, а уметь создавать полноценные веб-приложения на ASP.NET Core — обратите внимание на курс «C# ASP.NET Core разработчик». Он помогает перейти от теории к практике: от архитектуры и API до микросервисов, контейнеров и React-интерфейсов — всё в одном профессиональном стеке .NET. Пройдите вступительный тест, чтобы понять, подойдет ли вам программа курса.

А еще в рамках курса преподаватели проведут пару бесплатных демо-уроков, приходите:

  • 12 ноября: «Гид по Redis в C# ASP.NET». Регистрация

  • 18 ноября: «Управление зависимостями в ASP.NET Core: расширение возможностей стандартного IoC контейнера с помощью Scrutor». Регистрация

Комментарии (4)


  1. DjUmnik
    08.11.2025 12:38

    Смысл писать веб на компилируемом языке? Чем это лучше Laravel Livewire?


    1. Arragh
      08.11.2025 12:38

      Много веб-сервисов пишется на стеке C#/.NET. И компании не то чтобы хотят тратиться на найм фронтендера для всего этого. Для них и будет блейзор.

      Так же много сервисов создается для внутреннего использования внутри компаний. И в этом случае блейзор будет вообще отличным вариантом.

      А приведенный тобой Laravel тут вообще никаким боком, поскольку php и .NET вообще никак не пересекаются и не конкурируют. Это разные стеки для разных задач.


  1. ProgerMan
    08.11.2025 12:38

    Blazor - офигенная штука! Можно писать фронт так, будто пишешь бэк. Все боли фронтендеров фактически отсутствуют, при особом желании можно даже совсем без JS обойтись. Имеются разные варианты использования Blazor:

    • С постоянным подключением к серверу - довольно медленное решение, но можно быстро написать всё в одном. Можно писать запросы к БД хоть прямо со страницы.

    • Только фронт с отдельным API (на чём угодно). Очень быстро работает, максимально простое решение, рендеринг на клиенте. Можно получить данные при инициализации страницы. Фактически не отличается от MVC, если API на C#.

    • Связка фронта и API с возможностью рендеринга на сервере. Тут надо сначала поразбираться, данные можно получать в разных местах в зависимости от выбранного режима рендеринга. Самое сложное решение, но при этом самое гибкое, с кучей возможностей. Не требует постоянного соединения с сервером.

    Я использовал все три подхода. В новом проекте собираюсь использовать третий. Для меня даже нет варианта выбора другого фреймворка. Blazor почти идеален.

    А ещё там встроены страницы управления аккаунтом. Так что можно с ходу иметь сайт с возможностью регистрации пользователей, не тратя на это кучу времени. Остаётся лишь настроить под себя.


    1. Arragh
      08.11.2025 12:38

      Я бы не сказал, что server-версия «довольно медленное решение». Для проверки я находил сайты, созданные на Blazor Server, которые хостятся в сша. И могу сказать, что я каких-либо лагов не почувствовал. Даже с телефона на мобильном интернете они работали нормально.