如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

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

评论

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

有证书有目录!|海泰密码服务平台

电子信息发烧客

服务网格中 sidecar 流量治理与多协议嗅探

博文视点Broadview

【LeetCode】最长的斐波那契子序列的长度Java题解

Albert

LeetCode 7月月更

微信内H5页面唤起小程序&App

南城FE

前端 微信开发 7月月更

许式伟:Go+ 演进之路

七牛云

golang 编程语言 go+

JAVA编程规范之集合处理

源字节1号

软件开发 后端开发

Python基础详解(二)

五分钟学大数据

Python 7月月更

一加10 Pro拍照如何?随手一拍都是大片

Geek_8a195c

蛋糕可以一刀切,研发需求可以吗? | 敏捷实践

LigaAI

程序员 敏捷 产品经理 需求分析 敏捷管理

【C语言】进阶指针night

謓泽

7月月更

想要白嫖正则是吧?这一次给你个够!

掘金安东尼

前端 正则 7月月更

【招募】2022向光奖|年度ESG影响力投资奖正式启动!

创业邦

一图看懂:国企数字化转型4个方向3个战略

融云 RongCloud

企业数字化

DBPack 读写分离功能发布公告

峨嵋闲散人

分布式事务 分库分表 读写分离 dbmesh Database Mesh

泛云桌面关键技术分析

A池伟

云桌面 算力网络

手机怎样控制led显示屏发视频?

Dylan

ipad 手机 wifi LED LED显示屏

Python 入门指南之交互式输入行编辑历史回溯

海拥(haiyong.site)

Python 7月月更

SpringBoot自动装配原理

急需上岸的小谢

7月月更

【福利活动】给你的代码叠个 Buff!点击“茶”收好礼

亚马逊云科技 (Amazon Web Services)

Lambda Code

技术分享| HTTP 代理

anyRTC开发者

https 音视频 网络协议 HTTP

爱奇艺加入龙蜥社区,携手打造多元化视频生态底座

OpenAnolis小助手

开源 爱奇艺 龙蜥社区 CLA 社区建设

送你的代码上太空,与华为云一起开发"最伟大的作品"

华为云开发者联盟

云计算 代码

浅谈 Slack Channel 支持的一些提高工作效率的特性

汪子熙

远程办公 即时通讯 SAP Slack 7月月更

python 中Mixin混入类的用法

杨彦星

Python

CRMEB Pro v1.4,让用户体验更出彩!

CRMEB

软件研发效能需求价值流分析专题

思码逸研发效能

研发效能 软件研发

web前端培训如何使用CSS自定义属性实现骨架屏

@零度

CSS 前端开发

龙蜥社区招募推广大使&体验官啦!| 人人都可以参与开源

OpenAnolis小助手

开源 龙蜥社区 社区建设 官网 体验官

Room:又要写业务代码了?看看我吧,给你飞一般的感觉!

编程的平行世界

数据库 Android; android jetpack

RocketMQ系列一:入门级使用演示

hum建应用专家

云计算 RocketMQ

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