Как стать автором
Обновить

Комментарии 61

Уболтали, таки попробую еще до НГ эту штуку.

Лично я могу рекомендовать каждому c# разработчику попробовать Blazor. Мы уже некоторое время с ним работаем и ещё ни одной строки на JS не написали. А приложение уже кое-что умеет.

Без js целиком не получится, надо хотя бы будет имплементить через JSRuntime.Current.InvokeAsync базовые функции типа alert, да и от кучи полезных библиотек не отказаться никак.

Пока что получается. А так я с вами согласен на данный момент библиотек не много, но и jQuery не сразу всеми плагинами оброс. Так что это дело времени.

Одним словом свой рантайм в webassembly и все с этим сопутствующие вещи…
Новый дивный мир, в котором можно выбрать язык программирования для frontend все ближе! :-)
Занимался последнюю неделю написанием небольшой внутренней админки на Blazor. Есть сложности с отладкой, но целом впечатления сугубо положительные. Вот тут рассказывается об альтернативных моделях хостинга приложения, например Blazor + Electron. Очень интересно во что это в итоге вырастет.
Я заметил, что отлаживать и разрабатывать проще в server-side режиме. Переключать их просто, а отладка и запуск приложения пока быстрее именно в полноценном .NET Runtime.
сможет ли Blazor за счет WebAssembly быть быстрее современных JS — фреймворков типа React, Angular, Vue

Да ладно, быстрее. Будет шикарно, если просто не будет жутких тормозов при открытии страницы. Так как сейчас работает — смысла нет, я уже забыл что открывал. Ваша демка загружалась секунд 30 — это не приемлемо для использования — просто баловство.

Если кардинально ничего не поменяется — то просто поделка для галочки, не пригодная для реального использования.
Несмотря на большую задержку загрузки в СВОИХ областях вполне будет востребовано. К тому же при достаточной популярности браузеры решат проблему начальной загрузки популярных WebAssembly библиотек. Не так сложно это сделать.
Несмотря на большую задержку загрузки в СВОИХ областях вполне будет востребовано.

В таком виде — только для локальных сетей разве что. Если есть вариант доступа через. моб. сети, где скорость плавает — то использовать крайне не комфортно.

Будем надеяться что это просто недоработка.
На Google I/O 2018 был доклад о том, что AutoCAD сделал веб версию на WebAssembly. Они просто смогли скомпилировать и переиспользовать ядро своей системы, написанной на C/C++. Не знаю сколько в итоге длится первый запуск и как много он весит, но мне кажется это пример приложения, загрузку которого можно и подождать ради возможности работать из браузера.
Так автор упомянул как происходит загрузка сборок, судя по путям это с его же сервера тянется. Оптимизация этой загрузки в будущем очевидна.
Оптимизация этой загрузки в будущем очевидна.

Каким образом? Устанавливать сборки вместе с браузером? Или же хранение сборок в локальном кеше браузера?

Не первое вряд ли пойдут производители браузеров. На второе — нет гарантии что пользователь уже посещал сайты на .Net Core — такие будут ждать 30 сек. и не дождуться.

Желательная скорость загружки — до 0.8 сек для среднего интернет-канала. Терпимая — до 2-3 сек.
Как я и сказал загрузка была с того же сервера, библиотеки можно залить в облачное хранилище. Еще формат библиотек, их можно сжать и объединить в одну.
Боюсь, пока бесперспективно.

Если сделают компиляцию в нейтивный код, чтобы страница загружалась хотя бы 1 секунду — тогда можно будет вести речь о конкуренции Angular/React. Желательно быстрее. Пока же это, быть может, подойдет для внутренних/локальных сайтов, которыми пользуются работники одного предприятия в добровольно-принудительном порядке (им за это деньги платят).
Еще рано говорить о перспективности, подождем первую версию.
Первая загрузка — 8 секунд. Последуйщие — мгновенно. Так что тут просто загрузка с сервера.
Первая загрузка — 8 секунд.

У меня 30 сек., так как сейчас живу на даче и интернет не шибко быстрый. Но при посещении других сайтов — никакого дискомфорта не испытываю — остальные сайты загружаются мгновенно.

Но и 8 сек. — это жуткий дискомфорт. Не требуется сверх-скорость, но ждать более 2-3 сек. — не приемлемо.
Хочу отметить, что приведенный в статье пример — это не пример использования Blazor как такогового, а пример того, как выполнить компиляцию Blazor «проекта» на стороне клиента.
Microsoft.CodeAnalysis.* (считай целый компилятор) самые тяжелые библиотеки в этом примере.
А не попадался ли вам какой-нибудь сайт Blazor без этих Microsoft.CodeAnalysis.*? Реально ли его использовать или пока это просто эксперимент?
Blazor, как фреймворк для разработки приложений, выполняемых на стороне браузера — это определенно эксперимент.

Это признают даже в Microsoft. Именно по этой причине в новую версию .NET Core 3.0 войдет не Blazor, а Razor Components (server-side Blazor).
Причина все таже — даже при условии, что вам не нужны тяжеловесы аля Microsoft.CodeAnalysis.* для обычных приложений и использования умного mono linker, который вырезает весь неиспользуемый код, размер минимального приложения довольно велик.

Один из первых «осмысленных» демо примеров был FlightFinder Может появилось что-то более интересное.
В статье я указал что я сам не на 100% уверен в этом, однако предпосылки в этом есть. Microsoft везде пишет, что это до сих пор экспериментальный фреймворк. Т.е. много проблем еще не решено. На текущий момент они используют Mono-Linker для уменьшения размера dll-к. Но все равно они остаются полноценными CLR — Dll-ками. Обещают, что позже будет компиляция в нативный WASM, соответственно и скорость может быть значительно ваше.
А пока — можно только гадать, что будет дальше.
Ура! +1 способ исправить
CORS header 'Access-Control-Allow-Origin' does not match…

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

Прощайте сообщения «нужно обновить флеш плеер». Mono cможет сама себя обновить.
Вы немного не верно понимаете технологию. Файтически они поднимают внутри браузера полноценную .NET CLR Runtime. И интерпретатор DLL. Но они исполняются внутри виртуальной машины WASM. Т.е. никакого вмешательства в дела ОС быть не может.
Но баги… конечно могут быть всегда.

А Cors — это не проблема, а защита. И она останеться, потому что все запросы из WASM полностью подчиняются правилам браузера.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Он не выполнит произвольную DLL. Только ту, в которой есть .net assembly и которая собственно сможет выполниться в .net машине, которая запущена в браузерной песочнице.

CORS разрешается вроде как на стороне сервера…
Автору спасибо за статью. Blazor реально крут. Но — но медленный. Холодный старт 15мб и 12сек времени это на гарантированной скорости в 100мб/с и среднем железе. Тоже пробовал написать свой Hello World и был немного разочарован скоростью. Как верстальщику мне жутко еще не понравилось real-time обновление страниц при небольших изменениях — порядка 8-10 секунд (тестил в студии, готовый пример, возможно это можно как-то оптимизировать). Ну и даже Hello World уже прилично весит. В целом, как мне кажется, технология действительно имеет место быть, но пока ее можно использовать в каких то узкоспециализированных проектах, в которых скорость загрузки не важна, а нужно выжать максимум из возможностей браузеров. Может какие то игры делать на этой платформе оправдано. SPA с быстрым холодным стартом точно мимо
На одной из конф слышал, что они планируют уменьшить размер базового кода для продкашена до 1мб.
Что уже будет очень неплохо как мне кажется. Сейчас конечно да, печально.
НЛО прилетело и опубликовало эту надпись здесь

Нет, это не Silverlight. Тут весь смысл в том, что WebAssembly разрабатывает не Microsoft, а сообщество.

НЛО прилетело и опубликовало эту надпись здесь

Именно так. Он связан через Mono т.е. в принципе любой желающий может взять и разработать свой Blazor не приложив для этого титанический усилий.

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

Странный вопрос. Сайты, которые его используют.

НЛО прилетело и опубликовало эту надпись здесь
Вообще то все его фичи были в браузерах изначально.
НЛО прилетело и опубликовало эту надпись здесь

Уже пару месяцев работаем с Blazor. Пытаемся понять подойдёт ли он нам. Ощущения очень хорошие. Проблемы со скоростью первого запуска есть, но в десктоп браузере они не так заметны, да и надо понимать, что он ещё не вышел.
Также в сторону wasm уже идёт c++ и go.
Конечно, надо ещё доработать процесс отладки. Немного огорчило, что нельзя напрямую из клиента обратится в WCF сервис.

Вы используете Blazor для публично доступного сайта или для внутреннего (корпоративного) приложения?

Для внутреннего и только в целях тестирования возможностей.

Аааа!!! Где вы раньше были?! Я как раз сейчас с двухэтапной компиляцией мучаюсь. Компоненты, объявленные в компилируемой же сборке упорно не подхватываются даже при двухэтапной сборке. Ощущение, что addTagHelper не видит саму сборку. Че делать и куда копать не понял пока...

А может кто-то из уважаемой аудитории разъяснить, чем Blazor так хорош и почему его не ждет судьба GWT?

Ответ «потому что WebAssembly» ситуацию не проясняет, потому что одной этой составляющей для успеха маловато.
Остается язык на котором ведется разработка, там Java, тут шарп.
НЛО прилетело и опубликовало эту надпись здесь

Отвечу сразу вам и Ascar, потому что называется одно и то же преимущество – возможность не писать на ненавистном Javascript


По своему опыту работы с GWT, в более-менее больших приложениях, абстракция все равно протекает и приходится вставлять вставки «нативного» JS.


В этом отношении мне больше нравится подход Rust или Kotlin, где есть нормальная интеграция с веб-платформой, не требующая кучи трюков для вызова браузерного API.


В Blazor я вижу как раз-таки GWT-стиль — скрыть браузерную сущность за толстым слоем абстракций, которые по-любому не смогут поспевать за развитием веб-технологий. И это меня настораживает

НЛО прилетело и опубликовало эту надпись здесь

Тем самым вы подтвердили мои опасения. GWT тоже фреймворк, и он не смог угнаться за конкурентами.
Аргумент «это будет часть ASP, а значит Майкрософт его не бросит» не убедителен, потому что у Майкрософта уже есть Typescript

НЛО прилетело и опубликовало эту надпись здесь
Дался Вам этот GWT

Потому что эти проекты похожи как родные братья, только с разницей в 10 лет. И мотивация к появлению одна и та же: «что угодно, лишь бы не JS»


GWT был внутренней разработкой Google, которую они низвестно зачем выложили в Open Source

Я знаю несколько проектов на GWT вне Google, так что рынок был. Sencha GWT для кого-то же создали? Через 10 лет про Blazor тоже так говорить будут: «экспериментальная разработка, непонятно зачем выложенная в OpenSource»?


хайп был уже на стороне NodeJS и «супергероического» AngularJS

Я собственноручно переводил сборку фронтенда с Maven на Grunt. Однозначно получилось удобнее, никакого «ради хайпа» там не было. GWT тоже пробовали, оказалось не так удобно.

НЛО прилетело и опубликовало эту надпись здесь

Аргумент «GWT был примочкой сбоку, а Blazor встраивается в основной стек веб-разработки на .Net» принимается с таким подходом может что и выйдет

Blazor может взлететь, а может о нем все забудут через год, другой. Это не столь важно.
Ничто не вечно.
Важно, что постоянно появляются попытки подвергнуть сомнению монополизацию JS в браузерах. Монополия это практически всегда плохо. Мы, как разработчики должны только радоваться данным попыткам, потому что в итоге мы выиграем в любом случае.
В сторону WebAssembly уже идут: Java, C++, Go, C# и это только о которых я знаю.

Комментарии к статье о поддержки WebAssembly в ещё один язык:


  • как здорово, давайте свергать монополию JS

Комментарии к статье о программировании IoT на node.js


  • все плохо, зачем Javascript лезет не в свою нишу, нужно использовать правильные интрументы.

Либо я что-то не так понимаю, либо здесь двойные стандарты.


Кроме того, монополия на DOM API все ещё в руках JS, так что в итоге Blazor все равно частично транслируется в JS со всеми вытекающими

Конечно, сегодня все так, как вы пишите, но есть проблема — существует завтра. Нет смысла в таких обсуждениях. Не нравится не используйте. Я начал использовать и получил кайф.
Никаких двойных стандартов. Посыл один — «никто не любит JavaScript, надо его выпилить». Отсюда и «долой с бэкенда» (node.js) и «долой с фронтенда» (WebAssembly)

Это не наброс на JS, это я просто про отсутствие двойного стандарта.
Так стало понятнее, хоть и радостнее ситуацию не делает
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации