AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

评论

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

Spring Boot Serverless 实战系列“部署篇” | Mall 应用

阿里巴巴云原生

阿里云 Serverless 云原生 MAll

《亚马逊编年史》阅读散记

boshi

读书笔记

急速学习C#死锁

喵叔

1月月更

模块四作业

whoami

「架构实战营」

2021 阿里云容器服务年度盘点:企业级容器应用变化和技术趋势观察

阿里巴巴云原生

阿里云 容器 运维 云原生

什么是 Github 的元数据以及如何备份 github 上的数据

汪子熙

GitHub 1月月更

996统计

你?

从零打造Instagram

俞凡

架构 Instagram 大厂实践

架构实战营 第 4 期 模块四作业

架构实战营 模块四 「架构实战营」

考试数据存储方案

皓月

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

一文看懂椭圆曲线签名算法

Rayjun

区块链 椭圆曲线

白帽子渗透行为监控方案

明亮安全观

网络安全 信息安全 渗透测试 行为监控

云原生背景下故障演练体系建设的思考与实践—云原生混沌工程系列之指南篇

阿里巴巴云原生

阿里云 云原生 混沌工程

08 Prometheus之警报管理

穿过生命散发芬芳

Prometheus 1月月更

也谈谈Python的内存管理

宇宙之一粟

Python 内存管理 1月月更

从运维域看 Serverless 真的就是万能银弹吗?

阿里巴巴云原生

阿里云 Serverless 运维 云原生

一次无脑接口测试导致的无效排查的经历

liuzhen007

1月月更

架构训练营 -- 模块六

LJK

#架构训练营

【Spring专场】「AOP容器」不看源码就带你认识核心流程以及运作原理

码界西柚

spring spring 源码 1月月更 Spring原理

电商系统微服务拆分和系统架构设计

drizzle

「架构实战营」

模块 4 作业

miliving

Elasticsearch核心原理系列:10张图理解Elasticsearch核心概念

慕枫技术笔记

后端 1月月更

SAP R/3系统的R和3分别代表什么含义,负载均衡的实现原理

汪子熙

负载均衡 abap 1月月更

深入解读aws graviton3

三少

云计算架构师

这是一个操作系统,但既不是Windows也不是Linux

LAXCUS分布式操作系统

云计算 分布式操作系统 计算机集群 分布式应用 行列混合存储

第六周作业

lv

Spring Boot CLI安装(WIN10、macOS系统)

JavaEdge

1月月更

来了!「年度最强技术答辩」看这里

阿里巴巴云原生

阿里云 Serverless RocketMQ 云原生 编程挑战赛

ReactNative进阶(九):API学习之注册组件AppRegistry

No Silver Bullet

React Native 1月月更 AppRegistry

「架构实战营」模块四《如何设计业务高性能高可用存储架构》作业

DaiChen

作业 模块四 「架构实战营」

深信服智能边缘计算平台与 OpenYurt 落地方案探索与实践

阿里巴巴云原生

阿里云 云原生 边缘计算 openyurt

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