【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

评论

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

揭秘MySQL的主从同步实现方案

架构精进之路

MySQL 6月日更

模块6作业6

杨彬

#架构实战营

大型分布式 Web 系统的架构演进

xcbeyond

分布式 架构演进 6月日更

模块六-创业公司电商微服务

华仔架构训练营

Kubernetes手记(17)- 调度策略

雪雷

6月日更

(鸡汤文)这一次我终于搞懂了 JavaScript 定时器的 this 指向!

编程三昧

JavaScript 编程 大前端 定时器

Flink Side Outputs

Alex🐒

flink flink1.13

拆分电商系统为微服务——架构师训练营作业六

开拓纪

架构是训练营 作业六

OnceAgain

一个向往理想的现实主义者

个人总结

Dajngo 网站开发 ---Task2(下)

IT蜗壳-Tango

6月日更

架构训练营模块6作业

Geek_649372

架构训练营

网络攻防学习笔记 Day50

穿过生命散发芬芳

网络攻防 6月日更

HBase 介绍

Alex🐒

HBase

【21-13】PowerShell 运算符

耳东@Erdong

PowerShell 6月日更

DevOps的未来

俞凡

DevOps

拆分电商系统为微服务

9527

架构实战营

同被指责「电力浪费」,如今的区块链会是 1999 年的互联网吗?

CECBC

我国区块链产业发展面临的问题

CECBC

因女性而繁荣,适老化科技的钱景与挑战

脑极体

六、拆分电商系统为微服务

菠萝吹雪—Code

架构实战营

☕【JVM技术探索】各种类型对象占用内存情况分析(上)

洛神灬殇

JVM java对象分析 6月日更 内存分配

[译] R8 优化:值假设

Antway

6月日更

架构训练营模块六作业

Geek_e0c25c

架构训练营

你多久没有换手机了?

看山

闲聊 6月日更

自媒体从业者如何选择合适的公司

石头IT视角

JavaScript学习(六)

空城机

JavaScript 大前端 6月日更

架构实战营模块6作业

冬天的树

Redis入门二:数据类型

打工人!

redis 6月日更

电商微服务架构设计

俞嘉彬

架构实战营

跨越式成长 - 高效的学习方法

Ryan Zheng

推荐算法工程师需要的知识储备(十三)

数据与智能

算法 推荐系统 成长路线

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