【问题标题】:Pros and cons of using WebAssembly + Blazor? [closed]使用 WebAssembly + Blazor 的优缺点? [关闭]
【发布时间】:2019-11-16 04:22:59
【问题描述】:

我的问题是:

  • 是否每次打开 SPA 时都会下载运行时?就算是缓存了,下载运行时是不是会花太多时间来下载网页应用?
  • 是否将其他程序集(Nuget、C++ 库等)发送到浏览器?如果是这样,那是不是太大了,不会导致应用打开时间过长?
  • 与 V8 上的 Javascript 相比,性能是否足够好?
  • 与 Razor 相比有什么惊人的不同吗?

而且,回答所有这些问题后,是否有任何理由使用 Blazor+Wasm 而不是 Javascript?

【问题讨论】:

  • “运行时”大约为 2.5 MB,是否有问题会有所不同。对于其他性能因素来说,现在还为时过早,Blazor 仍处于测试阶段。但希望它至少和 JS 框架一样快。
  • 使用 Blazor 的主要原因可能是:没有 JavaScript。

标签: c# .net-core webassembly blazor


【解决方案1】:

这些是您可以毫不费力地在 Google 上搜索的多个问题,我认为人们会因此而对您投反对票。我会花时间回答你的问题。

每次打开 SPA 时都会下载运行时吗?即使被缓存了,下载运行时是否会花费太多时间来下载 Web 应用程序?

正如您在webassembly.org 上所读到的,webassembly(进一步称为Wasm)是一种二进制指令格式,用于基于堆栈的虚拟机,具有开放的 API,并提供给 Chrome、Edge、Firefox 和 WebKit。正如@HenkHolterman 提到的,有一个小的运行时需要由客户端至少加载一次,除非他们清除缓存。这意味着客户端第一次加载基于 Wasm 的 Web 应用程序时可能会有更糟糕的体验,这种体验有多糟糕,我无法准确判断,使用 Fiber 的 2.5 mb 并不显着,使用 edge/ 2g 或 gsm/3g 移动连接可能很重要。

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

当您构建/编译您的Blazor 应用程序时,您通常会恢复所有依赖的程序集和包,这些程序集和包在部署后静态托管在主机上。客户端将不需要任何额外的程序集。

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

这取决于。 Wasm 当前不知道 DOM,因此 Blazorrerenders 页面在需要时使用 Wasm。应该清楚的是,使用JavaScript 在大页面中操作单个或几个 DOM 元素会更快。除此之外,Wasm 渲染整个页面的速度更快,并且可能最适合需要这种性能的 Web 应用程序,例如游戏或 3D 渲染。差异对于正常的浏览体验来说太小了,如果应用程序设计不好,使用任何一个都会很糟糕。

与 Razor 相比有什么惊人的不同吗?

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

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

【讨论】:

  • 我认为这里的“运行时”是 Mono.wasm,是的,至少需要下载一次(到缓存中)。
  • @HenkHolterman thx 的提示,不知道,我正在查找它
  • Nit:官方拼写是Wasm,不是WASM,见主页。这不是首字母缩写词,没有理由大喊大叫。 ;)
  • 我刚刚处于愤怒模式:D
  • 谢谢。这对我理解 Wasm 有很大帮助。抱歉问题格式,我只是想回答“Is Blazor > JS”,并想确保答案会考虑所有这些子句
猜你喜欢
  • 2011-06-07
  • 2012-03-10
  • 2013-01-26
  • 2010-10-06
  • 1970-01-01
  • 2012-11-06
  • 2010-12-17
  • 2011-04-01
  • 1970-01-01
相关资源
最近更新 更多