Czy to prawda, że przeglądarka będzie musiała pobierać bibliotekę Webassembly za każdym razem, gdy strona się ładuje?
Nie, przeglądarki mogą buforować pliki. Wspólny CDN dla aplikacji Blazor załatwi sprawę.
Czy ten system działa szybciej niż na przykład React / Vue skompilowany w JavaScript?
Blazor używa zestawu internetowego, na papierze zestaw sieciowy powinien być szybszy niż jakakolwiek biblioteka js, jednak nie wszystkie przeglądarki mają jeszcze dojrzały parser zestawu internetowego. Może się więc okazać, że obecnie przeglądarki nie będą uruchamiać asemblera internetowego z optymalną szybkością.
Możesz stworzyć małą aplikację blazor i uruchomić ją w przeglądarce Firefox, Chrome lub Edge. W większości przypadków Firefox uruchamia aplikacje blazor znacznie szybciej niż Chrome lub Edge, co oznacza, że twórcy przeglądarek nadal muszą ulepszać, nawet Firefox może to robić.
Jeśli Twoja aplikacja musi często uzyskiwać dostęp do DOM, to zdecydowanie web assembler / Blazor będzie wolniejszy w porównaniu do jakichkolwiek bibliotek JS, ponieważ web assembler nie może uzyskać bezpośredniego dostępu do DOM bez użycia Invokes (co jest obecnie wolne, zapoznaj się z moim testem porównawczym Blazer poniżej) .
W przeglądarce Firefox 10 000 RegisteredFunction.InvokeUnmarshalle
wywołania metod pustych trwają 250 ms, podczas gdy chrome i edge potrzebują więcej niż 2400 ms na moim komputerze ”. W czystym JS zajmuje to mniej niż 10 milisond dla tego samego scenariusza.
Ponadto bieżąca implementacja Blazor ma własny silnik MSIL na szczycie silnika składania sieci Web przeglądarek, co oznacza, że istnieją dwa tłumacze pracujące nad uruchomieniem projektu Blazor, podobnie jak dwóch tłumaczy interpretujących konwersację zamiast na jednym. Obecnie Microsoft pracuje nad kompilatorem AOT, który nie został jeszcze wydany. Po wydaniu Blazor będzie znacznie szybszy niż obecna implementacja.
http://www.mono-project.com/news/2018/01/16/mono-static-webassembly-compilation/
Możemy spokojnie założyć, że montaż sieciowy jest przyszłością tworzenia stron internetowych, ale w tej chwili nie możemy powiedzieć nic o przyszłości Blazor. Na papierze Blazor może być szybszy niż jakikolwiek framework, jednak potrzebujemy zaangażowania ze strony opiekunów zestawów internetowych, programistów przeglądarek, firmy Microsoft i społeczności, aby teorie były praktyczne.
Aktualizacja z 10 lipca 2018 r
W repozytoriach WebAssembly są nowe propozycje.
Umożliwienie WebAssembly bezpośrednio obsługi DOM.
https://github.com/WebAssembly/proposity/issues/8
Typy odwołań dla WebAssembly z GC. https://github.com/WebAssembly/reference-types/blob/master/proposity/reference-types/Overview.md
Powyższe dwie propozycje utorują drogę do znacznie szybszej interakcji między DOM a webassembly w przyszłości. IOW Blazor będzie w przyszłości znacznie szybszy.
Aktualizacja z 17 października 2018 r
Zespół Firefoksa był w stanie dotrzeć do wywołań JS -> WASM tak szybko, jak wywołania metod JS -> JS. Na razie FireFox znacznie wyprzedza wszelkie inne przeglądarki, jeśli chodzi o obsługę WebAssembly
https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-%F0%9F%8E%89/