实验进行中:.NET WebAssembly支持
极客时间编辑部
讲述:杜力大小:1.07M时长:02:20
目前四大主流浏览器都默认支持 WebAssembly,而.NET 社区也在继续为.NET 开发者提供相关支持,帮助他们将代码编译成 WebAssembly,然后在浏览器上运行。
WebAssembly 是一种二进制 Web 格式,旨在以接近原生的性能运行非 JavaScript 语言编写的应用。
目前,C、C++ 和 Rust 都可以通过基于 LLVM 的工具链来编译成 wasm 格式。这些语言编译成原生代码后,可以在没有任何附加代码的情况下运行。当然,.NET 通常需要一个运行时平台来执行代码,因此在浏览器中使用它在理论上是可行的,只是需要一些额外的工作来让它更高效地运行。
史蒂夫·桑德森(Steve Sanderson)提到一个非常可能实现.NET WebAssembly 的项目,叫做 Blazor,但它还只是一个进行中的实验,还远远没有生产价值。
Blazor 在 Mono 运行时平台上面,运行被编译成 wasm 格式的.NET 代码。就目前的效果而言,一个 "Hello World" 应用的负载比预期中的要大。
桑德森表示,自从迁移到 Mono 运行时平台,新的 Blazor 应用就变得很庞大,大约有 4MB。这是因为 Mono 上的 wasm 还没有进行任何无效代码剥离和压缩,并且打包了一个非常大的运行时库。这个运行时库包括许多桌面相关的功能,但这些功能是与 Web 无关的。他还表示,期望一个面向 Web 优化过的生产应用,能够减小到接近 300KB 的大小。
另外还有一种可能适合.NET 的方法,它类似于现有的原生代码编译方法,即静态编译组合成 wasm 的代码。这些代码包括 Mono C 运行时平台和开发者的.NET 代码。
目前有一个使用这种方式的样本应用,它采用“基于 LLVM 的实验性的 WebAssembly、LLVM 连接器和二进制化工具来生成最终的.wasm 代码”。
不过,这个应用会向用户计算机下载 10MB 代码。相比之下,加载一次最近的推特完整页面会下载 7MB 的内容,访问一次最近的亚马逊页面会下载 8.9MB 的内容。
当然也有人认为,一旦使用一种定制的概要文件,这个大小应该会明显减少,因为这种文件会基于移动端的概要配置文件,并且移除许多不必要的功能。
不过遗憾的是,这个应用在最近几个月还没有更新过。
另外,在官方的 CoreRT 库中,也有 WebAssembly 支持原型。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论