それはまだアルファレベルであるという事実にもかかわらず、私はブレイザーの使用を開始したいと思います。私が理解しているように、blazorはWebAssemblyを使用して、クライアント側でC#をコンパイルします。そして、私は質問があります:このシステムは、例えば、JavaScriptでコンパイルされたReact/Vueよりも高速ですか?ブラウザがページを読み込むたびにWebassemblyライブラリをダウンロードする必要があるのは本当ですか?インターネットでは、一般的なJSフレームワークのパフォーマンスの比較は行われていないため、Microsoftの新しいフレームワークの理論的なパフォーマンスを知りたいと思います。前もって感謝します
ブラウザがページを読み込むたびにWebassemblyライブラリをダウンロードする必要があるのは本当ですか?
いいえ、ブラウザはファイルをキャッシュできます。 Blazorアプリ用の一般的なCDNがトリックを行います。
このシステムは、たとえばJavaScriptでコンパイルされたReact/Vueよりも高速に動作しますか?
BlazorはWebアセンブリを使用します。紙のWebアセンブリはどのjsライブラリよりも高速ですが、すべてのブラウザに成熟したWebアセンブリパーサーがまだあるわけではありません。そのため、現時点では、ブラウザーがWeb Assemblyを最適な速度で実行しないことに気付くかもしれません。
小さなblazorアプリを作成して、Firefox、chromeまたはEdgeで実行できます。ほとんどの場合、FirefoxはchromeやEdgeよりもはるかに高速にblazorアプリを実行します。これは、Firefoxでさえも改善が必要なブラウザメーカーの改善が必要であることを意味します。
アプリが頻繁にDOMにアクセスする必要がある場合、Web AssemblyはInvokesを使用せずにDOMに直接アクセスできないため、間違いなくWeb Assembly/BlazorはJSライブラリと比較して遅くなります(現時点では遅いので、下のブレザーベンチマークを参照してください) 。
Firefox 10,000では、空のメソッドへのRegisteredFunction.InvokeUnmarshalle
呼び出しには250ミリ秒かかりますが、chromeとEdgeには私のPCで2400ミリ秒以上必要です。」純粋なJSでは、同じシナリオで10ミリ秒未満かかります。
https://webassemblycode.com/webassembly-cant-access-dom/
さらに、現在の実装Blazorには、ブラウザWeb Assembly Engineの上に独自のMSILエンジンがあります。つまり、Blazorプロジェクトを実行するために2人のインタープリターが働いています。現在、MicrosoftはAOTコンパイラに取り組んでおり、まだリリースされていません。リリース後、Blazorは現在の実装よりもはるかに高速になります。
http://www.mono-project.com/news/2018/01/16/mono-static-webassembly-compilation/
Web AssemblyはWeb開発の未来であると安全に想定できますが、現時点ではBlazorの未来については何も言えません。紙の上では、Blazorは他のどのフレームワークよりも高速になりますが、理論を実用的にするには、Webアセンブリのメンテナー、ブラウザ開発者、マイクロソフト、コミュニティのコミットメントが必要です。
WebAssemblyリポジトリに新しい提案があります。
上記の2つの提案は、将来DOMとWebアセンブリの間のより高速な相互作用への道を開くでしょう。 IOW Blazorは将来的にはるかに高速になるでしょう。
Firefoxチームは、JS-> WASコールをJS-> JSメソッドコールと同じ速さで到達できました。現在、FireFoxはWebAssemblyのサポートに関して他のブラウザよりもはるかに優れています。