Что такое веб-платформа Blazor от Microsoft и стоит ли ее использовать? — CloudSavvy ИТ

Логотип Blazor

Blazor — это новый веб-фреймворк от Microsoft, предназначенный для конкуренции с ведущими в отрасли платформами, такими как React. За исключением того, что вместо использования JavaScript он работает в среде выполнения .NET и позволяет разработчикам создавать интерактивные веб-приложения с использованием C # и HTML.

Что такое даже ASP.NET?

Если вы пришли из мира фреймворков JavaScript, вас могут смутить отношения Blazor с ASP.NET. Обе они являются «веб-фреймворками», но Blazor — лишь одна часть экосистемы ASP.NET.

В то время как Платформа ASP.NET на данный момент ему почти 20 лет, это не фреймворк динозавра — он постоянно совершенствуется вместе с C # и .NET в целом, поскольку Microsoft использует его для внутренних целей. Он полностью кроссплатформенный и такой же производительный, как никогда.

Вначале был только ASP.NET, который можно было использовать для создания всевозможных веб-приложений. Был ASP.NET MVC (Model-View-Controller), который создает веб-страницы, управляемые данными, и ASP.NET WebAPI, который специализируется на внутренних API. Недавно они были объединены в единый пакет с модернизированным ASP.NET Core.

Пять лет назад, Razor Pages (который отличается от Blazor и имеет странное название) был выпущен для упрощения выразительного синтаксиса MVC, который требует большого количества шаблонов и, как таковой, не очень хорошо сочетается с ориентированным на компоненты дизайном современных приложений. MVC требует, чтобы вы создавали представление и модель для каждой страницы в отдельных файлах:

MVC требует, чтобы вы создавали представление и модель для каждой страницы в отдельных файлах:

Между тем, с помощью Razor вы можете создавать более оптимизированные страницы или компоненты с интегрированным кодом на самой странице. Это работает лучше, когда страницы проще, но обе доступны в качестве вариантов для использования.

Между тем, с помощью Razor вы можете создавать более оптимизированные страницы или компоненты с интегрированным кодом на самой странице.

Все эти функции являются частью экосистемы «ASP.NET». Самое замечательное в этом — пакеты и поддержка. Как и NPM для JavaScript, C # также имеет здоровую среду пакетов с диспетчером пакетов NuGet.

Так что же такое Blazor?

Blazor ничего не меняет в синтаксисе этих страниц. Вы по-прежнему будете использовать страницы Razor и / или MVC. На самом деле это даже не плохо, потому что уже существует множество библиотек пользовательского интерфейса и компонентов для страниц Razor, поддерживаемых C #.

Blazor добавляет интерактивность. Традиционные страницы MVC / Razor, использующие ASP.NET, всегда были неуклюжими и изо всех сил пытались не отставать от веб-приложений реального времени, таких как React. Веб-приложения в реальном времени настолько быстры, что они начинают занимать и рабочий стол, с такими фреймворками, как Electron, запускающими приложения в контейнере Chromium, при этом пользователи не вникают.

Итак, Blazor был создан для удовлетворения этого спроса. Он работает так же, как React, где действия изменяют состояние и свойства и запускают обновления приложения. Платформа будет выполнять обновление DOM за вас в зависимости от того, какие компоненты нуждаются в обновлении. Это позволяет приложениям, работающим в реальном времени, обновлять страницу или даже полностью перерисовывать ее без фактического обновления браузера.

Преимущество Blazor над устоявшейся структурой, такой как React, — это язык. Он позволяет создавать веб-приложения на C #, и одно это делает его привлекательным для многих разработчиков. Какого бы мнения вы ни придерживались по поводу споров о динамической и статической типизации, «настольные» языки, такие как C #, определенно имеют преимущества, а в Интернете серьезно не хватает альтернатив JavaScript.

Если у вас есть серверная часть, требующая высокой производительности, C # также будет работать намного быстрее, чем JavaScript. Несмотря на то, что JS ни в коем случае не является медленным и значительно улучшился за эти годы, он все равно будет менее производительным, чем C #, который на самом деле работает довольно близко к производительности собственного C ++.

Blazor обеспечивает лучшую совместимость. Многие приложения также уже используют C # на сервере. Например, у вас может быть API ASP.NET, который взаимодействует с вашим интерфейсом React. Вам понадобятся отдельные модели для сервера и клиента, а также отдельный код для взаимодействия с ними. Если они на одном языке, это позволяет легко обмениваться кодом и библиотеками между клиентом и сервером. Это единственная причина, по которой NodeJS существует на стороне сервера — хотя JavaScript не является идеальным языком рабочего стола, создание приложений на одном языке сокращает время разработки.

Будущее Blazor

На самом деле существует несколько различных типов Blazor, поскольку в последнее время Microsoft предприняла большие усилия для модернизации экосистемы ASP.NET. В настоящее время выпущены две версии:

  • Blazor Server, который работает как React Server Side Rendering и выполняет большую часть обработки на сервере.
  • Blazor WebAssembly, который использует магию WebAssembly для запуска реального кода .NET в реальном клиентском веб-браузере.

Microsoft также планирует выпустить еще три версии Blazor, которые все еще находятся в разработке и доступны для предварительного просмотра:

  • Blazor PWA, который разработан для публикации сайта как устанавливаемого прогрессивного веб-приложения (PWA).
  • Blazor Desktop / Hybrid, который позволяет упаковывать приложения Blazor в настольные приложения и в основном похож на Electron, но с более высокой производительностью.
  • Blazor Native, который заменяет веб-интерфейс на собственный интерфейс платформы. Неясно, насколько это полезно помимо взаимодействия с существующими инструментами Blazor, и эта версия все еще находится на этапах планирования.

В своем объявлении о Blazor Desktop Microsoft заявила, что «Blazor — это модель программирования приложений. Он очень легко адаптируется и может выполняться разными способами (в зависимости от потребности) ».

Похоже, что Microsoft считает Blazor своим следующим стандартом создания внешних интерфейсов приложений. Их работа тоже того стоит, потому что по мере того, как приложения становятся все более и более зависимыми от Интернета, становится все труднее обосновать создание отдельных интерфейсов для Интернета и рабочего стола. У Blazor светлое будущее, и у веб-приложений, созданных сегодня на Blazor Server и WebAssembly, будет много возможностей для роста.

Blazor Server против Blazor WebAssembly

Blazor Server использует Подключение SignalR для связи между клиентом и сервером. Это просто причудливый слой поверх соединения WebSocket, который может при необходимости вернуться к другим соединениям. Это сохраняет всю обработку на сервере и оставляет клиенту простое представление с базовым способом управления DOM.

Blazor Server использует соединение SignalR для связи между клиентом и сервером.

Blazor WebAssembly — это то, где это действительно круто. WebAssembly (WASM) на самом деле не язык, на котором вы пишете, а цель компилятора. На самом деле он работает почти так же, как Microsoft Intermediary Language (MSIL), в который компилируются все C #, F # и VB.NET. За исключением того, что вместо того, чтобы работать со средой выполнения .NET, он работает с использованием среды выполнения WebAssembly в браузере.

Wasm можно использовать как переносимую цель компиляции для других языков.

Самое интересное в WebAssembly заключается в том, что это относительно легкая цель компилятора. Подобно тому, как C # может компилироваться в MSIL, C # также может компилироваться в WebAssembly. Ну, технически это компиляция MSIL в WebAssembly (как это проще), но суть та же.

Любой язык может компилироваться в WASM, даже полностью родные настольные языки, такие как C ++. Это не теоретически — это действительно работает на практике. AutoDesk смог портировать AutoCAD, кодовую базу C ++ 30-летней давности, перейти к веб-приложению на основе WebAssembly, за несколько месяцев с относительной легкостью. Кто-то даже портирован Дум 3.

Blazor WebAssembly в основном берет весь сервер, а также среду выполнения .NET и запускает ее поверх WASM. Затем вместо того, чтобы разговаривать с сервером через SignalR, он напрямую обращается к DOM. Это исключает обработку на стороне сервера, что может быть идеальным для некоторых приложений.

Вместо того, чтобы общаться с сервером через SignalR, Blazor WebAssembly напрямую обращается к DOM.

Это дает ему уникальные возможности для конкуренции с такими фреймворками, как React, поскольку это, по сути, первый настоящий конкурент JavaScript для клиентских веб-приложений. Хотя вам нужно добавить несколько тегов сценария для загрузки среды выполнения и, возможно, придется погрузиться в код JavaScript для нескольких вещей, вы, по большей части, должны иметь возможность создать целое производственное веб-приложение, не написав ни одной строки JavaScript.

Независимо от того, используете ли вы Blazor Server или Blazor WebAssembly, решать вам. У обоих есть свои преимущества. Blazor Server запускает весь код обработки в доверенной среде и не требует наличия общедоступного API. Blazor WASM отзывчивый и быстрый, и его можно даже развернуть как статический сайт, обслуживаемый только NGINX.

Как Blazor работает с JavaScript?

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

частная асинхронная задача ConvertArray () {text = new (ожидание JS.InvokeAsync («convertArray», quoteArray)); }

Наоборот:

DotNet.invokeMethodAsync (‘{НАЗВАНИЕ СБОРКИ}’, ‘{ИДЕНТИФИКАТОР МЕТОДА .NET}’, {АРГУМЕНТЫ});

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

Технически вы можете использовать все пакеты NPM с Blazor, хотя его настройка и взаимодействие с ним со стороны .NET может быть немного головной болью, поэтому в большинстве случаев вы должны предпочесть пакет NuGet.

Можете ли вы использовать Blazor на рабочем столе (Electron)?

Вы можете использовать Blazor на рабочем столе.

Удивительно, но ответ на это положительный. Хотя Microsoft планирует выпустить Blazor Desktop / Hybrid, который делает то же самое, тем временем вы можете просто использовать обычный Electron. Это потому, что Electron действительно не заботится о том, какую веб-страницу он обслуживает, и может просто обслуживать приложение Blazor.

Вы могли подумать, что в нем будет использоваться приложение Blazor WebAssembly, но на самом деле проще просто добавить Electron на существующий сервер ASP.NET Core. WASM имеет некоторые накладные расходы, поэтому этот метод работает быстрее. Это то что Электрон.НЕТ делает, и работает на удивление хорошо. Все, что вам нужно сделать, это установить его и добавить Electron в качестве службы ASP.NET. Вы также можете вызывать собственные функции Electron из C #.

Однако у Microsoft большие планы на Blazor Desktop. Они планируют полностью избавиться от зависимости от браузера и JavaScript и просто запустить собственный контейнер с веб-представлением, которое полностью соответствует .NET.

«Рабочий стол Blazor будет структурирован аналогично тому, как работает Electron. Будет элемент управления WebView, который отображает контент со встроенного веб-сервера Blazor, который может обслуживать как Blazor, так и другой веб-контент (JavaScript, CSS и т. Д.) ».

Это веб-представление будет использовать Safari, WebKitGTK или WebView2, в зависимости от ОС. WebView2 использует Chromium под капотом, поэтому он будет работать так же, как Electron, за исключением того, что он более производительный и использует меньше памяти.

Какой бы ни была реализация, приятно видеть, что другая платформа конкурирует с JavaScript и Electron за создание кроссплатформенных веб-приложений и настольных приложений. Blazor Desktop должен быть выпущен в ноябре 2021 года с первой предварительной версией .NET 6..

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.