写点什么

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

评论

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

鸿蒙应用开发从入门到实战(十一):ArkUI组件Text&TextInput

程序员潘Sir

鸿蒙 HarmonyOS

在YashanDB数据库中实现大规模数据分析的有效策略

数据库砖家

4+10+N,华为坤灵“求解”中小企业智能化

Alter

AI 智能化

No008:共建产业知识生态——DeepSeek如何助力中小企业数字化转型

lsycang

2025年最佳笔记本扩展坞评测:一站式提升工作站效率

qife122

扩展坞 多显示器

在YashanDB数据库中进行数据分区的最佳实践

数据库砖家

“超节点+集群”:华为撞出来的算力之路

脑极体

AI

鸿蒙应用开发从入门到实战(十):ArkUI图片组件Image

程序员潘Sir

鸿蒙 HarmonyOS

优化企业数据结构:YashanDB数据库设计原则

数据库砖家

Motion 5 for Mac v5.11.0 视频后期特效处理 利用 Apple Log 2视频的动态范围和更广色域

Rose

DRUID AI获得3100万美元C轮融资

财见

优化数据存储:YashanDB数据库的优势解析

数据库砖家

云计算时代下的YashanDB数据库最佳实践

数据库砖家

手撕大模型|FlashAttention 原理及代码解析

地平线开发者

自动驾驶; 算法工具链 地平线征程6

No009:如果DeepSeek拥有“身体”——具身智能与多模态交互

lsycang

大厂思维与“小快轻准”产品的矛盾

lsycang

第六届医学人工智能国际学术会议(ISAIMS 2025)

搞科研的小刘

学术会议 医学 医学人工智能

云端YashanDB数据库的优势与劣势

数据库砖家

在YashanDB数据库中处理大规模数据挑战

数据库砖家

基于YOLOv8的人体多姿态行为识别系统(站立、摔倒、坐姿、深蹲与跑步)|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

人工智能

‌Daft:AI驱动的多模态数据融合引擎

老周聊架构

AICon

No010:如果DeepSeek能“自我进化”——终身学习与群体智能

lsycang

打印机漏洞、匿名协议与AWS安全:一周技术热点解析

qife122

AWS安全 打印机攻击

PD 分离推理架构详解

Se7en

推理 LLM vLLM

优化企业数据查询效率:YashanDB数据库索引策略

数据库砖家

Android隐藏活动启动器 - 一键创建应用快捷方式

qife122

android 活动启动

ClaudeCode中的效率神器SubAgents怎么用?

阿星AI工作室

产品 AI 产品经理 AI编程

第七届机器学习、大数据与商务智能国际会议(MLBDBI 2025)

搞科研的小刘

机器学习 大数据与商务智能

BRV Capital投资Zettabyte并启动“TITAN”AIDC项目

财见

搜索百科(3):Elasticsearch — 搜索界的“流量明星”

极限实验室

搜索引擎 lucene elasticsearch 开源 搜索百科

如何向AI借脑使用高级表达?

阿星AI工作室

编程 AI 产品经理 AIGC Claude

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