10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:002629

评论

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

GPS原始坐标转百度地图坐标(纯C代码)

DS小龙哥

7月月更

直播系统源码——短视频直播系统源码

开源直播系统源码

软件开发 直播系统 开源源码 短视频直播源码

mysql进阶(九)多表查询

No Silver Bullet

MySQL 多表查询 7月月更

ppdai站点登录参数加密解析,最短的文章,最棒的案例 com

梦想橡皮擦

Python 爬虫 7月月更

语音质量监控

Damon

7月月更

Qt | Qt Creator功能

YOLO.

qt 7月月更

C# 使用ListView控件实现文件查看大图标小图标,详细信息效果。

IC00

C# 7月月更

Kubernetes资源编排系列之二: Helm篇

阿里云大数据AI技术

运维

去哪儿旅行海量指标数据采集与存储

Qunar技术沙龙

【LeetCode】 数组嵌套Java题解

Albert

LeetCode 7月月更

如何判断透明LED显示屏质量优劣

Dylan

LED显示屏 led显示屏厂家

Qt|使用Http通讯下载文件

中国好公民st

HTTP qt 7月月更

采用Dubbo?还是Spring Cloud?

博文视点Broadview

EMQ宣布赞助Erlang生态系统基金会(EEF),加速推动Erlang技术在全球的蓬勃发展

EMQ映云科技

erlang 物联网 IoT emqx 7月月更

CSS重复线性渐变之画格子

南城FE

CSS 前端 7月月更

即刻报名|前沿技术探索:如何让 Spark 更强劲、更灵活

Kyligence

spark 开源

异想天开 | 假如用中文写代码,是一种什么体验?

雨果

程序员 开发者

SAP Fiori Launchpad 应用的两个实用技巧分享

汪子熙

JavaScript SAP SAP UI5 ui5 7月月更

java零基础入门-File类(概念篇)

喵手

Java 7月月更

ID生成器

ES_her0

7月月更

中原银行代码智能重构实践

中原银行

生产力 插件 代码重构 中原银行 智能重构

NFT市场格局仍未变化,Okaleido能否掀起新一轮波澜?

西柚子

Kyligence 正式支持 Amazon EMR Serverless,构建高效低成本云上数据分析

Kyligence

Cloud Kyligence Amazon EMR

龙蜥开发者说:社区首个支持 LoongArch架构的操作系统构建之路 | 第 9 期

OpenAnolis小助手

开源 操作系统 龙蜥开发者说 龙芯 LoongArch 架构

重新认识生命世界,也重新认识我们自己

图灵教育

科普

零信任架构的实施规划——针对联邦系统管理员的规划指南

权说安全

《黑客与画家》作者:18 个会杀死初创公司的错误

雨果

创业者

ABAP-OOALV实现

桥下本有油菜花

SAP abap

LeetCode-104. 二叉树的最大深度(java)

bug菌

Leet Code 7月月更

CRMEB 多商户这些功能,你都用过吗?

CRMEB

OpenHarmony littlefs文件系统存储结构与IO性能优化分析

OpenHarmony开发者

OpenHarmony

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