写点什么

Wasmtime:终于可以在.NET 应用中运行 WebAssembly 了

  • 2020-01-10
  • 本文字数:973 字

    阅读完需:约 3 分钟

Wasmtime:终于可以在.NET应用中运行WebAssembly了

尽管围绕WebAssembly的势头一直在增长,WebAssembly 运行时Wasmtime才增加对.NET Core的支持,使得基于.NET Core 的应用程序可以运行 WebAssembly 代码。


WebAssembly是安全、可移植的低级代码格式,旨在提供高效执行和紧凑表示。WebAssembly 通过实现硬件无关、语言无关和平台无关,尽可能将可移植性做到极致。


根据来自 Mozilla 的工程师 Peter Huene 介绍,将WebAssembly和.NET集成,可以简化代码共享同时提供更好的未授信代码隔离。


Huene 表示,相较于共享类似 C 库这样的本地库,共享 WebAssembly 模块明显要容易很多,因为前者依赖特定平台构建。而 WebAssembly 模块可以在无需修改的情况下分发。


作为一个示例,Huene 展示了将 Rust 编写的一个库编译成 WebAssembly,然后集成到.NET 应用中。整个过程不需要考虑.NET 应用程序运行的实际处理器架构和操作系统。整个工作流尚未完美简化,因为开发者还需要处理许多诸如值转换等低级别细节。正如 Huene 所说,多亏了即将发布的WebAssembly接口类型提案,这些问题将来都会解决。这个提案将会提升 WebAssembly 和.NET 之间的交互性,简化二者之间复杂数据类型的交换,无需再编写太多胶水代码,可以将 WebAssembly 模块当成是.NET 的包。


WebAssembly 要求显示导入允许模块使用的所有外部函数,并且仅能访问主机平台上保留的内存区域,从而使隔离未受信代码成为可能。该功能让 WebAssembly 模块能够在沙箱环境中高效运行的同时,无需担心陌生插件任意访问主机平台。


Huene 在他的文章中为希望在.NET 应用程序中使用 WebAssembly 的开发者提供了很多有价值的信息,涵盖了整个流程中的所有方面。包括了创建 WebAssembly 代码来解决问题;检查模块需要从主机获得哪些内容,以及想主机提供什么功能;创建.NET 工程并导入 WebAssembly 模块,同时将.NET 函数暴露给 WebAssembly 模块。


浏览器外运行 WebAssembly 应用程序的运行时环境中,Wasmtime 不是唯一一个。这里尤其需要提一下的有,Wasmer,它也和 Wasmtime 一样是一个通用运行时环境;WebAssembly Micro Runtime,专注于小尺寸设备。多亏了 Miguel de Icaza 创建的项目Wasmer-sharp,Wasmer 也能够用于.NET 项目。Wasmtime 和 Wasmer 都处于活跃开发阶段,虽然它们的目标不是完全重合


这两个项目或多或少有些竞争。


原文链接:


Wasmtime Enables Running WebAssembly From .NET Programs


2020-01-10 09:002142

评论

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

linux之rename命令

入门小站

架构训练营模块八

Geek_16d2b8

架构训练营 模块八

CityClub游览随笔记录

耳东@Erdong

InfoQ InfoQ写作社区2周年 City Club

Bigdata 作业第七周

Pyel

[模块8]消息队列存储消息数据的MySQL表格

凌波微步

「架构实战营」

消息队列存储消息数据的MySQL 表格设计

tom

模块8作业

Leo

架构实战营

模块8作业

Mr小公熊

设计消息队列存储消息数据的 MySQL 表格

smile

重学架构之消息队列存储消息数据的 MySQL 表格

陈华英

架构实战营 「架构实战营」

软件工程学习之道

乌龟哥哥

4月月更

爱讲故事的计算机科学家,和他的分布式系统

多颗糖

在线ASCII Banner艺术字生成工具

入门小站

工具

消息队列存储消息数据的MySQL表

Fingal

#架构实战营

开疆作剑,开荒为犁:2022春天,文心大模型走进产业的百花深处

脑极体

市场进展不断,STI 包括ZB等一系列上线预示着什么?

BlockChain先知

模块八作业

Geek_ec866b

架构训练营

文件包含漏洞带来的危害

喀拉峻

网络安全 漏洞

设计消息队列存储消息数据的 MySQL 表格

浪飞

浅谈项目中的需求管理

秋去冬来春未远

需求管理 需求分析 需求和问题

【架构学习08】——设计消息队列存储消息数据的 MySQL 表格

tiger

架构实战营

消息队列MySQL存储设计

石小天

「架构实战营」

[Day18]-[动态规划] 打家劫舍3

方勇(gopher)

LeetCode 动态规划 数据结构和算法

模块八

blazar

「架构实战营」

设计消息队列存储消息数据的 MySQL 表格

风中奇缘

#架构实战营 「架构实战营」

@DateTimeFormat 注解 和 @JsonFormat 注解

乌龟哥哥

4月月更

多系统信息化实施项目注意事项

秋去冬来春未远

数字化 信息化 系统集成 ERP 多系统

MQ存储消息的MYSQL表格设计

邹玉麒

架构训练营5期

一个系统工程师的14条建议

一席

高可用 稳定性 SRE 混沌工程 故障排查

设计消息队列存储消息数据的MySQL表格

张逃逃

云原生训练营 -Week08-2

jjn0703

Wasmtime:终于可以在.NET应用中运行WebAssembly了_大前端_Sergio De Simone_InfoQ精选文章