NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

实验进行中:.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:001850

评论

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

程序培训哪里比较好,应该怎么去选择

小谷哥

阿里云PolarDB、RDS获评信通院数据库Serverless认证最高“先进级”

Geek_2d6073

Baklib知识分享|文档管理促进企业成长进步

Baklib

文档管理

5000字解读《低代码发展白皮书(2022年)》

信通院IOMM数字化转型团队

低代码 无代码 低代码报告 IOMM

“程”风破浪的开发者|CTO浅谈数字化转型失败原因

CTO技术共享

学习方法 数字化转型 “程”风破浪的开发者

Wallys/QCN9074 11ax 4x4 MU-MIMO 2.4G M.2 /2.4GHz, max 23dBm per chain, up to 1147Mbps //QCN9072/QCN9024

wallys-wifi6

IPQ6010 IPQ6000

大咖说·对话开源|论数据库开源人才培养的实践

大咖说

数据库 阿里云 开源 人才培养

【web 开发基础】PHP 中的特殊流程控制(continue) -PHP 快速入门 (21)

迷彩

continue 10月月更 循环控制 PHP基础

数字政府行业趋势洞察报告(2022年)解读

信通院IOMM数字化转型团队

数字政府 IOMM 政府数字化转型

“程”风破浪的开发者|CTO浅谈数字化转型

CTO技术共享

学习方法 CTO 数字化转型 “程”风破浪的开发者

软件测试面试真题 | 请介绍一下Python中的深拷贝和浅拷贝

测试人

Python 软件测试 面试题 测试开发

低代码又又又“出圈”了

优秀

低代码

NFT质押挖矿分红dapp系统开发功能介绍

开发微hkkf5566

云科通明湖:金融业务可持续性能力建设,少不了这块“拼图”!

云科通明湖

负载均衡

去摩尔纹不用再凹姿势拍照了!合合信息智能文字识别“黑科技”上线扫描全能王

合合技术团队

人工智能 摩尔纹

“程”风破浪的开发者|Web 3.0 是泡沫还是金矿?

架构精进之路

1024 Web3.0 “程”风破浪的开发者

【10.21-10.28】写作社区优质技术博文回顾

InfoQ写作社区官方

优质创作周报

数据可视化大屏酷炫秘籍之前端开发者自己动手

葡萄城技术团队

前端 BI 可视化数据

MySql浅析

Andy

千企千面,WorkPlus面向政企提供个性化的数智办公平台解决方案

WorkPlus

API 动态更新 Upstream

云科通明湖

API upstream 动态更新

云原生颠覆实践,可持续性应用创新引擎

云科通明湖

负载均衡 云原生

2022创业邦100未来独角兽评选正式启动!

创业邦

Groovy Swagger @requestBody 加载超时 一键搞定

FunTester

数据库浅析

Andy

即时通讯IM WorkPlus支持国产化信创环境

WorkPlus

多线程、多进程同时操作MMAP,会怎么样?

C++后台开发

多线程 后端开发 多进程 linux开发 C++开发

牛掰!阿里十年架构师总结的分布式原理、设计与实战笔记

小小怪下士

Java 程序员 面试 分布式

CSP 直通车 | 在线直播认证培训双周末班 火热报名中

ShineScrum捷行

敏捷教练 ScrumMaster认证 Scrum认证

“程”风破浪的开发者|架构师的思维转变

CTO技术共享

学习方法 架构师 “程”风破浪的开发者

中台“不火”了,企业“底座”却火了

WorkPlus

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