速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

解读 Reference

浮白

ThreadLocal Reference ReferenceQueue Finalizer WeakHashMap

【程序员自救指南】中关村保洁大叔的一句话竟然帮我转正了

华为云开发者联盟

服务器 数字化 华为云 企业上云 云服务器

如何与面试官更好的沟通

escray

学习 面试

Python处理Excel文件的实用姿势

程一初

Python 自动化 办公

业务架构是什么?

周金根

BIZBOK 业务架构 IT帮 周金根

影响音视频延迟的关键因素(三): 传输、渲染

ZEGO即构

buffer API RTC sdk

Python处理PDF的实用姿势

程一初

Python 自动化 办公

Python处理图像文件的实用姿势

程一初

Python 自动化 办公

JavaScript 测试系列实战(一):使用 Jest 和 Enzyme 测试 React 组件

图雀社区

单元测试 自动化测试 Jest

LeetCode680-验证回文字符串 Ⅱ-Easy

书旅

LeetCode

LeetCode1160---拼写单词---Easy

书旅

LeetCode

Python处理Word文件的实用姿势

程一初

Python 自动化 办公

Python处理音频文件的实用姿势

程一初

Python 自动化 办公

Python处理视频文件的实用姿势

程一初

Python 自动化 办公

当地铁站都比你更努力

escray

学习 面试

utf8字符集下的比较规则

Simon

MySQL 字符集

并发神器CSP的前世今生

soolaugust

并发编程 并发 Go 语言

前端科普系列(4):Babel —— 把 ES6 送上天的通天塔

vivo互联网技术

Java 大前端 ES6

MacOS 环境下 Python 访问 MySQL

李绍俊

数据库设计

Jayli

数据库

Python处理PPT文件的实用姿势

程一初

Python 自动化 办公

详解责任链模式

大头星

前端科普系列(3):CommonJS 不是前端却革命了前端

vivo互联网技术

Java 大前端 脚本

MySQL从入门到精通

书旅

MySQL 索引

带你全面认识 Linux

简爱W

宿舍晚上温度高,那是你没听“鬼故事”

华为云开发者联盟

人工智能 AI 华为云 modelarts

前端科普系列(2):Node.js 换个角度看世界

vivo互联网技术

node.js 大前端

从《三体》到“中美科技战”,3分钟理解“网络”D丝为什么要迎娶“算力”白富美

华为云开发者联盟

数据 网络 芯片 算力 三体

代理模式详解

大头星

Python1024办公自动化系列

程一初

Python 自动化 办公

Python处理邮件和机器人的实用姿势

程一初

Python 自动化 办公

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