【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

评论

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

2023字节、腾讯、阿里等6家大厂Java开发面试真题+高频面试题总结

小小怪下士

Java java程序员 java面试 Java面试题

运动健康路线导入,助力用户轻松导航

HMS Core

HMS Core

用注解的方式优雅实现Ression分布式锁

做梦都在改BUG

Java 分布式锁 Ression

百度大健康行业如何打造医美IP爆点?这波“悦己”营销有颜又有料!

Geek_2d6073

2023年金三银四最新版Java面试八股文教程,涵盖25大专题:Java基础+spring全家桶+大数据+网络+设计模式+算法

采菊东篱下

Java 程序员 面试

2023 微信公开课黄铁鸣企业微信最新动态:1200w、5亿客户、GMV上千亿

B Impact

一文带你搞懂如何优化慢SQL

京东科技开发者

数据库 sql 优化 企业号 3 月 PK 榜

KubeVela 1.7 版本解读:接管你的已有工作负载

阿里巴巴云原生

阿里云 开源 云原生 KubeVela

MobTech MobPush|智能标签推送

MobTech袤博科技

手慢无!阿里云神作《Spring Boot进阶原理实战》真的太全了!

做梦都在改BUG

Java 微服务 Spring Boot 框架

置顶两个月!《程序员如何向架构师转型》神作在Github持续霸榜

做梦都在改BUG

Java 程序员 系统设计 架构师

GitHub上架即下架!《分布式系统人人都是架构师》全彩笔记开源

做梦都在改BUG

Java 分布式 系统架构 架构师

AI + Kubernetes 赋能DevSecOps 的思考

HummerCloud

人工智能 Kubernetes DevOps

前端和低代码两者藕断丝连的关系

这我可不懂

前端 低代码 JNPF

小程序营销模版——企业和开发者的应用形态

没有用户名丶

小程序容器

一文详解扩散模型:DDPM

京东科技开发者

人工智能 AIGC 企业号 3 月 PK 榜 DDPM

CVPR 2023 大模型研讨会召开在即,国际技术竞赛正式开赛

飞桨PaddlePaddle

行业分析| anyRTC智慧视频监控的应用

anyRTC开发者

人工智能 音视频 智慧城市 智慧交通 视频监控

Bytebase vs Flyway

Bytebase

数据库 版本控制 变更

LED透明屏私人定制势不可挡

Dylan

电子 LED显示屏 屏幕

阿里巴巴为什么不建议直接使用@Async注解?

Java你猿哥

Java ssm java8 Async Java工程师

MobTech MobPush|厂商通道支持

MobTech袤博科技

微服务架构下你不得不知的3种部署策略

做梦都在改BUG

Java 架构 微服务

机器学习算法(九): 基于线性判别模型的LDA手写数字分类识别

汀丶人工智能

人工智能 数据挖掘 机器学习 LDA算法

接通率维持66%以上,为什么火山引擎VeDI能让企业智能外呼不再难?

字节跳动数据平台

营销 用户增长 业务增长 客户数据 企业号 3 月 PK 榜

WorkPlus IM即时通讯平台,管理者不会拒绝的高效通讯办公工具

WorkPlus

阿里架构调整完毕,成立云智能集团全面独立经营,张勇兼任CEO

B Impact

Nautilus Chain 首个生态基础设施 Poseiswap,公布空投规则

西柚子

低代码平台搭建CRM 加速重构业务模式

力软低代码开发平台

凭借左程云(左神)的这份 “程序员代码面试指南”我入职了字节

Java你猿哥

Java 算法 数组 二叉树 面经

从 1000+ 参赛项目突围,涛思数据荣获 ITEC 2022 全球创业赛成长组二等奖

TDengine

tdengine 物联网 时序数据库 数字经济 大数据 开源

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