У Microsoft есть еще один способ создавать веб-приложения, как будто они нам или ей нужны. Blazor можно назвать .NET в браузере, и это может напомнить вам о Silverlight, но все не так просто.
С Silverlight у Microsoft было все — по сути, это была Windows в браузере. Проблема заключалась в том, что борьба и отсутствие четкого видения чего-либо значительного в сочетании с растущим чувством того, что плагины для браузера — это плохо, плохо, убили Silverlight. Похоже, подобное отношение затронуло всю систему .NET, оставив только языки, но только в том случае, если вы не смогли принять вызов C ++. Сегодня у нас все еще есть настольные приложения .NET, но у нас также есть довольно бесполезная универсальная платформа Windows и неправильно понимаемый фреймворк Xamarin. У нас также так много разновидностей ASP .NET, что трудно понять, что именно представляет собой современная технология ASP .NET.
Теперь мы можем добавить в список Blazor.
В этом есть определенный технический интерес, даже если вы не интересуетесь .NET, потому что это дает нам некоторые идеи о том, что может быть только в будущем из-за WebAssembly.
Что такое WebAssembly?
Исторически мы начинали с примитивных машинных языков и медленно продвигались к чему-то более сложному. Однако в веб-вселенной время идет в обратном направлении. Мы начали с очень сложного языка — JavaScript — и вернулись назад, используя все более примитивные формы — asm.js, а теперь и WebAssembly (WASM). По сути, WASM — это низкоуровневый способ кодирования программы, так что механизму JavaScript не нужно много модификаций для его запуска — и запускать его как можно быстрее. Он никогда не будет таким быстрым, как программа с машинным кодом, но он может быть достаточно быстрым для многих задач.
Хорошая новость заключается в том, что на данный момент большинство современных браузеров поддерживают WASM. Плохая новость заключается в том, что инструменты для создания WASM только зарождаются. Если вы хотите создать программу WASM, вам, вероятно, придется писать код на C / C ++ и использовать компилятор командной строки. Blazor — это, грубо говоря, способ написать на C # или любом другом языке .NET и запустить результат в браузере с помощью WASM ..
Идея немного похожа на Silverlight, поскольку позволяет использовать C #, но на этом сходство заканчивается. Это не плагин, и все, что он использует, не является веб-стандартом. С точки зрения программиста, самая большая разница в том, что он не использует XAML или какую-либо часть пользовательского интерфейса .NET. Поскольку это одно из главных преимуществ работы с .NET, это делает Blazor менее интересным.
Весь проект зависит от того, как команда Mono перенесла среду выполнения Mono на WebAssembly. Это позволяет коду .NET работать в двух возможных режимах. Вы можете взять среду выполнения Mono как двоичный файл WebAssembly и передать ей свою программу, скомпилированную на IL (промежуточный язык), и позволить среде выполнения интерпретировать ее.
В качестве альтернативы вы можете скомпилировать код .NET в WASM и запустить все как двоичный файл WebAssembly.
Это копирует способ, которым все работает на рабочем столе, когда ваш код интерпретируется во время выполнения средой выполнения .NET или запускается как собственный код, если вы запускаете его с помощью инструмента ngen / CoreRT.
Если браузер не может запустить WASM, компилятор возвращается к asm.js, что будет не так быстро.
Вы можете подумать, что полная компиляция — лучший способ из соображений скорости, но, по мнению Microsoft, это не так очевидно, потому что интерпретируемый код выполняется достаточно быстро, а код IL компактнее, чем WASM.
Вот и все, что касается кода, который выполняет эту работу — а как насчет пользовательского интерфейса?
Существует новый набор компонентов пользовательского интерфейса, основанный на синтаксисе ASP .NET Razor, для объединения разметки и C #. По сути, это переосмысление .NET способа, которым PHP выполняет эту работу — ужасная идея. Это не лучший способ обеспечить разделение проблем.
Blazor меняет правила игры?
Скорее всего, нет. Если вы программируете на C # или любом другом языке .NET, он может вас заинтересовать, но поскольку он не разделяет компоненты пользовательского интерфейса с традиционными приложениями .NET, Xamarin или UWP на основе XAML, вам придется делать все по-другому. Вы сможете использовать платформу .NET Standard 2.0, но из-за ограничений работы в песочнице не все функции будут работать. Вы сможете получить доступ к DOM и взаимодействовать с JavaScript, так что реальных преимуществ здесь тоже нет.
На данный момент трудно понять, почему кто-то решил использовать Blazor. Если у вас есть сайт ASP.NET и вы хотите расширить его с помощью одностраничного приложения, тогда есть некоторая синергия, но помимо этого единственным преимуществом является возможность писать на C #, F # или VB и запускать в браузере. Если вы уже находитесь в яме, которую вырыла для вас Microsoft, то вы вполне можете найти Blazor полезным инструментом.
Это не Windows в браузере. У Microsoft было это в Silverlight, и она выбросила его.
Конечно, еще рано. Blazor даже не является альфа-версией, и, хотя есть страница GitHub, Blazor имеет открытый исходный код с лицензией Apache 2, его использование предназначено только для любителей приключений. Я могу представить себе множество вещей, которые можно было бы добавить или изменить, чтобы сделать Blazor очень привлекательным — например, избавиться от Razor и использовать XAML — а это означает, что мои выводы также не являются даже альфа-версией.
Больше информации
Новый эксперимент: веб-приложения на основе браузера с .NET и Blazor
https://github.com/aspnet/Blazor
Статьи по Теме
Blazor, .NET в браузере, достигает 0,3
WebAssembly готов к использованию
WebAssembly поддерживает Mozilla, Microsoft, Apple и Google
WebAssembly Explorer — инструмент обучения
Мост Silverlight к приложениям UWP
Microsoft необходимо сделать будущее Silverlight ясным
Не выгружать .NET — метод Microsoft
Microsoft Open Sources .NET?
План поддержки Silverlight
Silverlight мертв, да здравствует Silverlight?
Silverlight 5 — конец строки
Был ли .NET ошибкой?
Чтобы быть в курсе новых статей на I Programmer, подпишитесь на нашу еженедельную новостную рассылку, подпишитесь на RSS-канал и подпишитесь на нас в Twitter, Facebook или Linkedin.
Комментарии
Оставьте комментарий или просмотрите существующие комментарии с помощью Disqus
или отправьте свой комментарий по адресу: comments@i-programmer.info