使用WebAssembly + Blazor的利弊?

Ale*_*kov -7 c# .net-core webassembly blazor

我的问题是:

  • 每次打开SPA都会下载运行时吗?即使已缓存,Web应用程序的下载运行时间也不会花费太多时间吗?
  • 是否将其他程序集(Nuget,C ++库等)发送到浏览器?如果是这样,是不是太昂贵了,会不会导致应用打开时间太长?
  • 与V8上的JavaScript相比,性能是否足够好?
  • 与Razor相比有什么惊人的区别吗?

并且,回答所有这些问题,是否有任何理由在Javascript上使用Blazor + Wasm?

Rau*_*ian 5

这些是您可以轻而易举地搜索到的多个问题,我想人们对此表示反对。我会花时间回答您的问题。

每次打开SPA都会下载运行时吗?即使已缓存,Web应用程序的下载运行时间也不会花费太多时间吗?

您可以在webassembly.org上阅读到的内容,webassembly(又称为Wasm)是具有开放API的基于堆栈的虚拟机的二进制指令格式,并已交付给Chrome,Edge,Firefox和WebKit。正如@HenkHolterman提到的那样,除非客户端清除其缓存,否则至少需要一次加载一次小的运行时。这意味着客户端第一次加载Wasm基于Web的应用程序时可能会有更糟糕的体验,这种体验有多糟糕,我不能确切地说,使用edge / 2g或gsm使用Fiber时2.5 mb并不显着/ 3g移动连接可能很重要。

是否将其他程序集(Nuget,C ++库等)发送到浏览器?如果是这样,是不是太昂贵了,会不会导致应用打开时间太长?

在构建/编译Blazor应用程序时,通常会还原所有相关程序集和程序包,并且这些程序集和程序包将在部署后静态地托管在主机上。客户端将不需要任何其他程序集。

与V8上的JavaScript相比,性能是否足够好?

那要看。Wasm目前尚不了解DOM,因此在需要时Blazor使用来重新提交Pages Wasm。应该清楚的是,使用时,对大页面中单个或几个DOM元素的操作将更快JavaScript。除此之外Wasm,渲染整个页面的速度更快,并且可能最适合需要这种性能的Web应用程序,例如游戏或3D渲染。对于正常的浏览体验而言,差异太小,如果应用程序设计不佳,则使用两者中的任何一个都将是不好的。

与Razor相比有什么惊人的区别吗?

Blazor是一个框架,相当侧重于应用程序交付,而与MVC相反,它Razor Pages是作为一种新的.Net开发方法引入的。现在Blazor使用与极为相似的语法Razor,简化了事件调用之类的操作,并在一个文件中统一了视图和代码,但主要区别实际上是Blazor可以在服务端或客户端,而Razor只能在第一个服务。这是您在两者之间做出决定时要考虑的因素。

话虽如此,您应该知道WebAssembly并没有试图像其FAQ中所描述的那样替换JavaScript ,它是对其的补充。决定是否Blazor在任何JavaScript框架上使用取决于您是否想要依赖项,JavaScript以及您的开发团队是否C#.Net堆栈和生命周期更有信心。

  • 我只是处于愤怒模式:D (2认同)