Blazor: устарел ли старый добрый asp.net mvc?
- Алик Ким
- 19 окт. 2022 г.
- 2 мин. чтения
как то в одном видео Тима Кори (https://www.youtube.com/user/IAmTimCorey) проскочила рекомендация не начинать новые вэб-проекты на Asp.Net Mvc (Core), а начинать их на Blazor. мол, asp.net mvc - вчерашний день.
решил поинтересоваться вопросом.
насколько я понял, основная фишка Blazor - работа через те же Razor-страницы (и, наверное, MVC, не уточнял), но с возможностью иметь "клиентский" код на C# вместо javascript.
есть 2 типа Blazor-приложений:
серверное - на сервере поддерживается виртуальная копия DOM для страницы, весь "клиентский" кода типа онкликов обрабатывается на сервере, а изменения в DOM клиента приходят уже средствами Blazor. для этого всего используются Web-сокеты.
Web Assembly-вресия - тут вообще все вэб-приложение работает на стороне клиента: в браузер прям скачивается DLLка, и там и исполняется.
у каждого подхода свои минусы. у серверного - видимо, некоторая задержка в реакции приложения на действия пользователя, у WASM - некоторое заметное время первой загрузки приложения (после каждого обновления, я так понимаю).
но написание клиентской части на C# - лично для меня - большой плюс.
иногда очень раздражает необходимость дублирования логики на C# и Typescript для, например, валидации значений формы. да и вообще.
лично мне кажется, что подход с web-assembly - менее авантюрный. он рассчитан на хороший интернет, но сейчас это все меньшая проблема. хотя, вроде, пишут, Blazor Server - менее сырой.
вывод для себя я сделал такой: если делаешь старый добрый многостраничный сайт - Asp.net mvc - самое то. если делаешь SPA - можно посмотреть в сторону blazor. ну это на первый взгляд, я эти технологии еще даже не щупал.
так же покрутил в голове еще один вопрос: а насколько юзабелен blazor для написания кроссплатформенных GUI-приложений?
и, таки, вроде, пишут, что тоже юзабелен. есть такой подход к написанию GUI-приложения: основную часть пишем на вэб-интерфейсе, потом помещаем ее в наше приложение через вэб-вью. вот так же можно встроить и Blazor через MAUI (это вроде как новая .net-платформа для написания кроссплатформенных GUI-приложений).
хотя, есть еще React Native. и он хоть и на TypeScript - вот эта сама идея со сниппетами/виджетами/компонентами - она же такая пусечка.
и еще насчет использования asp.net nvc: насколько я понял, при разработке для blazor для программиста мало, что поменялось по сравнению с разработкой для asp.net MVC. поэтому, если по умолчанию сайт на Blazor достаточно хорошо продуман, чтобы не иметь стандартных изъянов SPA (неправильная обработка Middle Click, прочие проблемы с открытием ссылки в новой вкладке, свой URL у каждой страницы, работа с историей браузера и т.п.) - то почему бы и традиционные многостраничные сайты не писать на Blazor, на выходе получая требуемый многостраничный сайт, но с плюсами SPA в виде отсутствия необходимости перегружать страницы целиком, а так же с C# на клиенте вместо JS (что немало само по себе).
полезные ссылки:
https://stackoverflow.com/questions/66301916/asp-net-core-blazor-vs-net-core-mvc-with-razor - расклад по MVC, blazor WASM, blazor server
https://www.codemag.com/Article/2111092/Blazor-Hybrid-Web-Apps-with-.NET-MAUI - кроссплатформенное GUI-приложение на MAUI/Blazor
Comments