发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

实验进行中:.NET WebAssembly 支持

  • 2017-12-12
  • 本文字数:1023 字

    阅读完需:约 3 分钟

目前四大主流浏览器都默认支持WebAssembly ,而.NET 社区也在继续推动为.NET 开发者提供相关能力,来将他们的代码编译成WebAssembly,然后在浏览器上运行。

WebAssembly 是一种二进制 web 格式,旨在以接近原生的性能运行不是用 JavaScript 语言编写的应用。目前,C、C++ 和 Rust 都可以通过基于 LLVM 的工具链来编译成 wasm 格式。这些语言编译成原生代码,然后可以在没有任何附加代码的情况下运行。当然,.NET 通常需要一个运行时平台来执行代码,因此在浏览器中使用它在理论上是可行的,只是需要一些额外的工作来让它更高效地运行。

其中一个非常可能实现.NET WebAssembly 的项目,是被 Steve Sanderson 称作 Blazor 的项目,虽然它还只是一个进行中的实验,远远没有生产价值。Blazor 在 Mono 运行时平台上,运行被编译成 wasdm 格式的.NET 代码。目前,这导致一个“Hello World”应用的负载比预期中要大,Sanderson 说:

自从迁移到 Mono 运行时平台,新的 Blazor 应用就变得很庞大(大约 4MB)。这是因为 Mono 上的 WASM 还没有进行任何无效代码剥离和压缩,并且打包了一个非常大的运行时库。这个运行时库包括许多桌面相关的功能,但这些功能是与 web 无关的。我期望,一个面向 web 优化过的生产应用,能够减小到接近 300KB 的大小。

这个项目的混合编译模型,已经在 2017 年 11 月 1 日合并到Mono 项目。

另外一种可能适合.NET 的方法,类似于现有的原生代码编译方法,即静态编译组合成wasm 的代码。这些代码包括Mono C 运行时平台和开发者的.NET 代码。截至本文撰写时,一个使用这种方式的样本应用,会向用户计算机下载10MB 代码。相比之下,加载一次最近的Twitter.com 完整页面会下载超过7MB 的内容,而访问一次最近的Amazon.com 会下载8.9MB 的内容。据 Miguel de Icaza 所说,这个大小应该会随着时间推移而减少:

一旦我们使用一种定制的概要文件,这个大小应该会明显减少。这种定制的概要文件基于移动端的概要配置文件,并且移除了许多不必要的功能。

这个项目采用“基于LLVM 的实验性的WebAssembly,LLVM 连接器和二进制化工具来生成最终的.wasm 代码”,但是在最近几个月还没有更新过。

在官方的 CoreRT 库中,也有 WebAssembly 支持原型。

查看英文原文:.NET WebAssembly Support an Ongoing Experiment


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-12-12 18:001837

评论

发布
暂无评论
发现更多内容

架构师训练营第一期第一周学习总结

朱磊

极客大学架构师训练营

极客时间架构师培训1期-第1周总结

Kaven

第一周命题作业

崔方剑

极客大学架构师训练营

架构师训练营第 1 期 第一周总结

张建亮

中国法定数字货币发展新机遇

CECBC

数字货币 数字经济

架构师训练营第 1 期-第一周周总结

郑凯元

极客大学架构师训练营

第一周作业一:食堂就餐卡系统设计

登顶计划

极客大学架构师训练营

LeetCode题解:94. 二叉树的中序遍历,递归,JavaScript,详细注释

Lee Chen

大前端 LeetCode

「架构师训练营第 1 期」-食堂卡管理系统

睡不着摇一摇

极客大学架构师训练营

食堂就餐卡系统设计

蓝黑

极客大学架构师训练营

食堂就餐卡系统设计

fmouse

架構師訓練營第 1 期 - 第 01 周作業

Panda

目标:创业团队组织搭建的内在逻辑

boshi

创业 团队组织

第一周学习总节

兵长

架构师训练营第一期第一周命题作业

朱磊

极客大学架构师训练营

你附近的人都有谁,这个功能是怎么实现的?

老胡爱分享

redis geo

架构师训练营第 1 期 命题作业

张建亮

训练营第一周作业1

仲夏

第1周 架构方法 浮皮潦草之总结

Pyr0man1ac

架构师训练营第 1 期-第一周学习总结

Todd-Lee

极客大学架构师训练营

第一周学习总结

崔方剑

极客大学架构师训练营

Spring Cloud 微服务实践 (3) - 服务间的调用

xiaoboey

Spring Cloud 熔断 服务调用 Feign

架构师训练营第 1 期 - 作业提交

Todd-Lee

极客大学架构师训练营

架构师训练营第一周作业 (就餐卡UML图)

springH₂O

训练营第一周作业 2

仲夏

第一周总结

fmouse

极客大学架构师训练营

RxSwift和RxCocoa入门

teoking

ios swift

week1-UML图

张兵

极客大学架构师训练营

区块链将掀开人类的伟大时代

CECBC

区块链 智能合约 价值物联网

用简单而又专业的角度为大家揭秘区块链和比特币

CECBC

比特币 区块链 数字货币

极客时间架构师培训1期-第1周作业

Kaven

实验进行中:.NET WebAssembly支持_.NET_David Iffland_InfoQ精选文章