Что такое Blazor

Blazor - это новейшая веб-платформа Microsoft для создания интерактивного клиентского веб-интерфейса с .NET вместо JavaScript. Вы можете использовать C # .NET для реализации интерактивных интерфейсных веб-приложений.

Как это возможно? Как браузер может понять или выполнить код C #? Blazor компилируется в WebAssembly, поэтому он может работать на клиенте без JS.

Что такое WebAssembly

С https://developer.mozilla.org

WebAssembly - это новый тип кода, который можно запускать в современных веб-браузерах. Это низкоуровневый ассемблерный язык с компактным двоичным форматом, который работает с почти нативной производительностью и предоставляет такие языки, как C / C ++ и Rust с целью компиляции, чтобы они могли работать в сети. Он также разработан для работы с JavaScript, что позволяет обоим работать вместе.

Это новый открытый веб-стандарт. Это байт-код для Интернета. Браузеры могут выполнять инструкции в формате байтового кода вместо JavaScript, который передается как язык сценариев. Если вы скомпилируете свой код в WebAssembly, он сможет работать в любом браузере, поддерживающем WebAssembly, с почти нативной скоростью.

Как все это работает

Браузер обеспечивает базовую поддержку WebAssembly, то есть может выполнять код WebAssembly. Microsoft создала среду выполнения .NET для WebAssembly, которая может выполнять сборки .NET. Компоненты Razor (элементы веб-интерфейса, описанные в следующей части статьи) компилируются в сборки .NET и загружаются в браузер вместе с .NET WebAssembly Run-Time и выполняются непосредственно в браузере.

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

Приложение Blazor состоит из компонентов, и они являются основными строительными блоками приложения. Посмотрим, что это такое.

Что такое компоненты Blazor

Компонент Blazor, часто называемый компонентом Razor, представляет собой класс .NET, который представляет элемент веб-интерфейса, реализованный с использованием C #, HTML, CSS и JS. Эти классы компонентов встроены в сборки .NET. Эта основная концепция позволяет нам создавать многоразовые сборки .NET. Это означает, что он позволяет нам создавать повторно используемые компоненты веб-интерфейса и совместно использовать их в приложениях. Они похожи на библиотеки классов в стандартном мире .NET. С .NET Core 3.0 вы получите новый тип проекта под названием Razor Class Library. Все повторно используемые компоненты веб-интерфейса могут быть созданы в рамках этого типа проекта и могут быть добавлены в качестве ссылки на сборку, таким образом, можно будет получить доступ к повторно используемым компонентам.

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

  1. Blazor WebAssembly
  2. Blazor Server

Blazor WebAssembly

Blazor WebAssembly работает на стороне клиента в браузере. Ранее в статье мы видели, как компоненты Blazor работают в браузере. Blazor WebAssembly все еще находится в стадии предварительной версии. На момент написания этой статьи ее релиз запланирован на май 2020 года.

Проверьте ниже, чтобы увидеть, как dll загружались в браузер. Посмотрите на mono.wasm - это .NET Run-Time WebAssebmly.

Хотите создать свою первую простую веб-сборку Blazor? Ниже приводится краткое пошаговое руководство по его созданию.



Сервер Blazor

В качестве альтернативы вы можете запустить те же компоненты Blazor на сервере. Как это работает? Компоненты Blazor размещаются на сервере, а взаимодействие с пользовательским интерфейсом будет осуществляться через соединение SingalR в реальном времени. Например, пользователь нажал кнопку, событие отправляется на сервер через SingalR. Соответствующие компоненты Razor запускаются и визуализируют результат на основе его обновленного состояния из события. Blazor сравнивает недавно отрисованный вывод с тем, что было отрисовано ранее, и отправляет сериализуемые дифференциальные данные DOM обратно для обновления пользовательского интерфейса. Посмотрите на пример ниже, при нажатии клавиши событие отправляется на сервер через SinglaR, а дифференциальные данные DOM отправляются обратно в браузер для обновления пользовательского интерфейса.

Blazor Server поставляется вместе с .NET Core 3.0. Это уже в производстве.

Недостатки Blazor WebAssembly

  1. Браузер должен поддерживать WebAssembly - все основные современные браузеры будут поддерживать это.
  2. Огромный размер загрузки - .NET Run-Time (сжатая версия 2 МБ), базовые библиотеки, библиотеки приложений - все это необходимо загрузить в браузер.
  3. Медленное время начальной загрузки.
  4. Для средних и крупных приложений размер загрузки кажется препятствием.
  5. Весь код вашего приложения находится в браузере. Его можно легко декомпилировать и извлечь.
  6. Это все еще в предварительном просмотре.

Недостатки Blazor Server

  1. Поскольку события работают через SingalR, вам нужно быть осторожным с задержкой. Клиент и сервер должны быть географически на одном континенте для уменьшения задержки.
  2. Больше пользователей означает больше подключений SinglaR, что означает больше ресурсов сервера. Вы платите за ресурсы сервера, чтобы поддерживать соединение с клиентом.

Что дальше и куда идет этот заголовок

У Microsoft есть отличная дорожная карта для Blazor.

Прогрессивные веб-приложения Blazor. PWA - это способ обеспечить более естественный опыт. Ожидайте превью в ноябре 2020 года.

Balzor Hybrid - это собственные приложения, использующие веб-технологии для пользовательского интерфейса. Например, мобильные приложения, отображающие веб-представление. Эти приложения работают в среде выполнения .NET, например .NET Core. Ожидайте превью в ноябре 2020 года.

Собственные приложения Blazor. Приложение Blazor Native запускается на устройствах изначально и использует общие абстракции пользовательского интерфейса для визуализации собственных элементов управления для этого устройства. Все еще экспериментальный. Дорожной карты пока нет.

Большое обновление ожидается в выпуске Blazor Web Assembly. Все зависит от того, какие механизмы они предлагают для устранения проблем.

  1. Минимизировать размер загрузки (размер .NET Run-Tim и других dll)
  2. Механизм шифрования для защиты авторских прав на ваш код.

В заключение, Blazor WebAssembly выглядит очень многообещающим. Я с нетерпением жду первоначального релиза и надеюсь, что он решит важные проблемы.