写点什么

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

评论

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

AI时代来临我们要如何面对?

小魏写代码

软件测试学习笔记丨Allure2 失败重试功能应用场景

测试人

软件测试

u-blox 面向多个大众应用市场推出最新 Wi-Fi 6 模块NORA-W4

科技之家

Web3 游戏周报(3.17-3.23)

Footprint Analytics

Web3 游戏

什么样的商品管理系统可以驱动品牌增长?

第七在线

云手机:实现便携与安全的双赢

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 电商云手机

云手机为什么能避免海外社媒账号被封?

Ogcloud

TikTok 云手机 海外云手机 tiktok云手机 云手机海外版

HashData的湖仓一体思考:非结构化数据支持(Directory Table等)讲解及演示

酷克数据HashData

postgresql AI 湖仓一体

智达方通全面预算管理系统,为企业带来更可靠的交付

智达方通

全面预算管理 全面预算管理系统

利用Python和数据获取技术实现智能旅游情报系统

阿Q说代码

Python 后端 数据获取

网心科技入选“2023年广东省名优高新技术产品”名单

网心科技

云计算 边缘计算 网心科技

数字化与敏捷的关系(第2部分)

ShineScrum捷行

宁德时代与特斯拉合作;钟睒睒连续四次中国首富丨 RTE 开发者日报 Vol.171

声网

什么是正向代理和反向代理?

EquatorCoco

反向代理 正向代理

体育赛事直播源码的价值和意义?不同应用场景获利方法

软件开发-梦幻运营部

华为云亮相KubeCon EU 2024,以持续开源创新开启智能时代

华为云开发者联盟

开源 开发 华为云 华为云开发者联盟

PHP调用API接口的方法及实现

Noah

从数据存储的演迁,看芯赛云分布式存储应用

科技热闻

SpringBoot如何优雅的进行参数校验

不在线第一只蜗牛

Java 后端 springboot

保姆级教程:教你UniMRCP对接华为云ASR(Linux版)

华为云开发者联盟

开源 开发 华为云 华为云开发者联盟

深入探讨iOS开发:从创建第一个iOS程序到纯代码实现全面解析

雪奈椰子

青亦学爬虫:根据淘宝天猫商品链接封装淘宝天猫商品详情数据接口

tbapi

淘宝API接口 淘宝商品详情接口 天猫商品详情接口 淘宝数据爬虫 天猫数据爬虫

QCA9882, QCA9880, and MT7915 WiFi cards for OpenWrt:What are the difference?

wallyslilly

QCA9880

深度|庖丁解InnoDB之Buffer Pool

阿里云瑶池数据库

数据库 云计算 阿里云 polarDB

那位拿了多个Offer的大佬分享了最新Go面经

王中阳Go

Go 后端 Go 面试题 面经 后端 大厂

不给灰暗留下死角:华为应用市场的安全之光

脑极体

应用

Databend 开源周报第 137 期

Databend

iOS开发优势解析,费用探究以及软件开发详解

How Big Data Works

Jackchang234987

使用云手机提升WhatsApp使用体验

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 电商云手机

基于 NVIDIA Megatron-Core 的 MoE LLM 实现和训练优化

阿里云大数据AI技术

人工智能 模型训练 大模型 LLM

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