Наученный горьким опытом Silverlight, уже не очень спешу смотреть новые технологии — боюсь потратить время на пустоту.
Пишут там про Blazor. Что оно такое, кто смотрел? Расскажите суть.
Как я понял, писать можно на C#, это плюс. Далее что? Твой код на C# компилируется в WebAssembly и уже эта WebAssembly генерит HTML, который видит пользователь? Все так?
Можно ли без HTML вообще, т.е. как-то рендерить напрямую растр. картинку или под.?
Какие браузеры поддерживают?
Здравствуйте, Shmj, Вы писали:
S>Наученный горьким опытом Silverlight, уже не очень спешу смотреть новые технологии — боюсь потратить время на пустоту.
S>Пишут там про Blazor. Что оно такое, кто смотрел? Расскажите суть.
S>Как я понял, писать можно на C#, это плюс. Далее что? Твой код на C# компилируется в WebAssembly и уже эта WebAssembly генерит HTML, который видит пользователь? Все так?
S>Можно ли без HTML вообще, т.е. как-то рендерить напрямую растр. картинку или под.?
S>Какие браузеры поддерживают?
Долго рассказывать — лучше послушай чего авторы говорят:
https://www.youtube.com/watch?v=uW-Kk7Qpv5U
Проблема в том, что к релизу готов только так называемый Server-Side рендеринг — это когда весь си-шарповский код работает на серваке а на клиент только изменения html пересылаются.
В варианте с WebAssembly сейчас используется экспериментальный интерпретатор, который примерно в 100 тормозней, чем нормальный код. Обещают допилить нормальную AOT компиляцию( даже рабочие демки есть), но когда это доведут до релиза, насколько стабильно и быстро будет работать, какой будет получаться размер wasm файла, какие будут ограничения — все это непонятно.
В общем я очень надеюсь что все будет хорошо, но где-то использовать пока не рискну.
Здравствуйте, Евгений Акиньшин, Вы писали:
ЕА>Проблема в том, что к релизу готов только так называемый Server-Side рендеринг — это когда весь си-шарповский код работает на серваке а на клиент только изменения html пересылаются.
Что для client-side что для server-side приложений api которым может пользоваться пользователь(напр. вызов события для кнопки из C# делается через `<button @onclick="`) — одинаково. Оно все еще активно меняется, но не так сильно что бы сложно было его поменять в приложении при обновлении до каждого нового blazor preview.
Если делать client-side приложение, то да, здесь могут не работать некоторые либы написанные на C# — те которые завязаны на вызовах Win32 API функций(включая открытие/закрытие файлов). Но в целом обычное веб приложение(в котором 99% функционала — это редактирование/показ данных) с текущим функционалом blazor — можно сделать, другое дело, что нет готовых стандартных норм. контролов(таблицы, paging и т.д.) — их надо делать самому, а выполнение больших либ (напр. сериализация/десериализация с помощью либы Newtonsoft.Json будет происходить заметно долго(в blazor для сер/дес используется либа simplejson)).
И так как выполнение C# кода в webassembly происходит не сильно быстро надо больше внимания уделять коду: лишний раз не пересоздавать .net объекты, лишний раз не рендерить компоненты и т.д.
+ нужно быть готовым к тому что .net либы могут загружаться довольно долго — обычное client-side приложение
демо весит ~10mb
github.